<?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>203247</bug_id>
          
          <creation_ts>2019-10-22 08:35:32 -0700</creation_ts>
          <short_desc>[iOS 13] imported/mozilla/svg/text/textpath-selection.svg is flaky</short_desc>
          <delta_ts>2019-10-23 20:25:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=199196</see_also>
          <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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1582378</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 08:35:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/52124292&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582379</commentid>
    <comment_count>1</comment_count>
      <attachid>381547</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 08:43:43 -0700</bug_when>
    <thetext>Created attachment 381547
Repro attempt #1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582416</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 10:02:37 -0700</bug_when>
    <thetext>&gt; 09:47:11.316 70031 worker/4 imported/w3c/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html passed
&gt; 09:47:11.363 68447 [27899/47157] imported/mozilla/svg/text/textpath-selection-305.svg failed unexpectedly (reference mismatch)
&gt; 09:47:11.361 70023 worker/3 imported/mozilla/svg/text/textpath-selection-305.svg failed:
&gt; 09:47:11.362 70023 worker/3  reference mismatch

😲</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582447</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 11:01:18 -0700</bug_when>
    <thetext>&gt; failed 1/500 times

this is going to be rough :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582570</commentid>
    <comment_count>4</comment_count>
      <attachid>381603</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 14:22:53 -0700</bug_when>
    <thetext>Created attachment 381603
Repro attempt #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582667</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 17:03:31 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Created attachment 381603 [details]
&gt; Repro attempt #2

Failures: 0/1000

This is going to take a few more tries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582672</commentid>
    <comment_count>6</comment_count>
      <attachid>381635</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 17:14:07 -0700</bug_when>
    <thetext>Created attachment 381635
Repro attempt #3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582674</commentid>
    <comment_count>7</comment_count>
      <attachid>381636</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 17:17:54 -0700</bug_when>
    <thetext>Created attachment 381636
Repro attempt #3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582732</commentid>
    <comment_count>8</comment_count>
      <attachid>381653</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 22:07:36 -0700</bug_when>
    <thetext>Created attachment 381653
Attempt #4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582733</commentid>
    <comment_count>9</comment_count>
      <attachid>381654</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 22:08:23 -0700</bug_when>
    <thetext>Created attachment 381654
Attempt #4 (2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582735</commentid>
    <comment_count>10</comment_count>
      <attachid>381655</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 22:09:08 -0700</bug_when>
    <thetext>Created attachment 381655
Attempt #4 (3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582736</commentid>
    <comment_count>11</comment_count>
      <attachid>381656</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 22:09:57 -0700</bug_when>
    <thetext>Created attachment 381656
Attempt #4 (4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582737</commentid>
    <comment_count>12</comment_count>
      <attachid>381657</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-22 22:11:01 -0700</bug_when>
    <thetext>Created attachment 381657
Attempt #4 (5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582850</commentid>
    <comment_count>13</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-23 09:45:39 -0700</bug_when>
    <thetext>Here’s the smoking gun (finally, after 3000+ attempts!)

09:17:16.341 74194 worker/4 imported/mozilla/svg/text/textpath-selection-35.svg output stderr lines:
09:17:16.341 74194   2019-10-23 09:17:15.873 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: 
09:17:16.341 74194   2019-10-23 09:17:15.873 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: *** TAKING SNAPSHOT FOR /Volumes/Data/worker/iOS-13-Simulator-WK2-Tests-EWS/build/LayoutTests/imported/mozilla/svg/text/textpath-selection-34-expected.svg ***
09:17:16.341 74194   2019-10-23 09:17:15.874 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UITextSelectionView: 0x7f8e43602280; frame = (0 0; 800 600); userInteractionEnabled = NO; layer = &lt;CALayer: 0x60000209d000&gt;&gt; are: []
09:17:16.342 74194   2019-10-23 09:17:15.874 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: 
09:17:16.342 74194 worker/4 imported/mozilla/svg/text/textpath-selection-35-expected.svg output stderr lines:
09:17:16.342 74194   2019-10-23 09:17:16.033 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: 
09:17:16.342 74194   2019-10-23 09:17:16.033 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: *** TAKING SNAPSHOT FOR /Volumes/Data/worker/iOS-13-Simulator-WK2-Tests-EWS/build/LayoutTests/imported/mozilla/svg/text/textpath-selection-35.svg ***
09:17:16.342 74194   2019-10-23 09:17:16.033 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UITextSelectionView: 0x7f8e43602280; frame = (0 0; 800 600); userInteractionEnabled = NO; layer = &lt;CALayer: 0x60000209d000&gt;&gt; are: []
09:17:16.342 74194   2019-10-23 09:17:16.034 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UITextRangeView: 0x7f8e5580c540; frame = (0 0; 0 0); opaque = NO; layer = &lt;CALayer: 0x6000020cd9e0&gt;&gt; are: []
09:17:16.342 74194   2019-10-23 09:17:16.034 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UIView: 0x7f8e5580ab80; frame = (0 0; 0 0); opaque = NO; userInteractionEnabled = NO; layer = &lt;CALayer: 0x6000020ce920&gt;&gt; are: []
09:17:16.342 74194   2019-10-23 09:17:16.035 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UIView: 0x7f8e55b047d0; frame = (117 77; 57 136); userInteractionEnabled = NO; layer = &lt;CALayer: 0x6000020a3720&gt;&gt; are: []
09:17:16.342 74194   2019-10-23 09:17:16.035 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UIView: 0x7f8e55b01600; frame = (19 77; 117 31); hidden = YES; userInteractionEnabled = NO; layer = &lt;CALayer: 0x6000020a3b00&gt;&gt; are: []
09:17:16.342 74194   2019-10-23 09:17:16.035 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UIView: 0x7f8e55b012e0; frame = (142 195; 32 18); hidden = YES; userInteractionEnabled = NO; layer = &lt;CALayer: 0x6000020a3640&gt;&gt; are: []
09:17:16.342 74194   2019-10-23 09:17:16.036 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UISelectionGrabber: 0x7f8e5370a400; frame = (116.5 77; 2 136); opaque = NO; layer = &lt;CALayer: 0x6000020d65e0&gt;&gt; are: []
09:17:16.342 74194   2019-10-23 09:17:16.036 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UISelectionGrabber: 0x7f8e53709c90; frame = (172.5 77; 2 136); opaque = NO; layer = &lt;CALayer: 0x6000020d66a0&gt;&gt; are: []
09:17:16.342 74194   2019-10-23 09:17:16.036 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: 
09:17:16.887 72611 [26152/48156] imported/mozilla/svg/text/textpath-selection-35.svg failed unexpectedly (reference mismatch)
09:17:16.886 74194 worker/4 imported/mozilla/svg/text/textpath-selection-35.svg failed:

…it normally looks like this in the passing case:

09:17:17.236 74194 worker/4 imported/mozilla/svg/text/textpath-selection-36.svg output stderr lines:
09:17:17.236 74194   2019-10-23 09:17:16.238 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: 
09:17:17.236 74194   2019-10-23 09:17:16.239 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: *** TAKING SNAPSHOT FOR /Volumes/Data/worker/iOS-13-Simulator-WK2-Tests-EWS/build/LayoutTests/imported/mozilla/svg/text/textpath-selection-35-expected.svg ***
09:17:17.236 74194   2019-10-23 09:17:16.239 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UITextSelectionView: 0x7f8e43602280; frame = (0 0; 800 600); userInteractionEnabled = NO; layer = &lt;CALayer: 0x60000209d000&gt;&gt; are: []
09:17:17.236 74194   2019-10-23 09:17:16.239 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: 
09:17:17.237 74194 worker/4 imported/mozilla/svg/text/textpath-selection-36-expected.svg output stderr lines:
09:17:17.237 74194   2019-10-23 09:17:16.940 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: 
09:17:17.237 74194   2019-10-23 09:17:16.940 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: *** TAKING SNAPSHOT FOR /Volumes/Data/worker/iOS-13-Simulator-WK2-Tests-EWS/build/LayoutTests/imported/mozilla/svg/text/textpath-selection-36.svg ***
09:17:17.237 74194   2019-10-23 09:17:16.941 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: The animations on &lt;UITextSelectionView: 0x7f8e43602280; frame = (0 0; 800 600); userInteractionEnabled = NO; layer = &lt;CALayer: 0x60000209d000&gt;&gt; are: []
09:17:17.237 74194   2019-10-23 09:17:16.941 WebKitTestRunnerApp[75982:105086234] &lt;WK&gt;: 
09:17:17.238 74194 worker/4 imported/mozilla/svg/text/textpath-selection-36.svg passed

Calling off the rest of the queued EWS jobs now, as I continue to investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582864</commentid>
    <comment_count>14</comment_count>
      <attachid>381689</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-23 10:16:35 -0700</bug_when>
    <thetext>Created attachment 381689
actual result</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582865</commentid>
    <comment_count>15</comment_count>
      <attachid>381690</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-23 10:16:59 -0700</bug_when>
    <thetext>Created attachment 381690
expected result</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582868</commentid>
    <comment_count>16</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-23 10:28:39 -0700</bug_when>
    <thetext>Maybe, just maybe we can get away with suppressing native iOS text selection views while taking a snapshot of the web view for the purposes of ref testing.

The timing with which the views are added and animated depend heavily on implementation details in UIKit, and I’m not sure it makes sense to try and make any assumptions here.

We still have a considerable number of layout tests that inspect these native selection views on iOS, but they all work by waiting until the native selection views reach a particular state (e.g. by polling for the number of ranged selection subviews, or the presence of selection handles, or waiting for a caret selection with a given geometry, etc.).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582989</commentid>
    <comment_count>17</comment_count>
      <attachid>381721</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-23 13:26:15 -0700</bug_when>
    <thetext>Created attachment 381721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583072</commentid>
    <comment_count>18</comment_count>
      <attachid>381721</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-23 15:11:30 -0700</bug_when>
    <thetext>Comment on attachment 381721
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:6866
&gt; +    [_contentView _startSuppressingSelectionAssistantForReason:WebKit::HideForTesting];

Can we/should we just hide the view instead of doing this thing that might have additional side effects?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583089</commentid>
    <comment_count>19</comment_count>
      <attachid>381721</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-10-23 15:29:33 -0700</bug_when>
    <thetext>Comment on attachment 381721
Patch

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

&gt; LayoutTests/platform/ios-wk2/TestExpectations:1335
&gt; -webkit.org/b/199196 [ Release ] imported/mozilla/svg/text/textpath-selection.svg [ Pass ImageOnlyFailure ]
&gt;  webkit.org/b/199196 [ Release ] imported/mozilla/svg/text/selectSubString-2.svg [ Pass ImageOnlyFailure ]

I think that &lt;rdar://problem/52124292&gt; tracks both of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583104</commentid>
    <comment_count>20</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-23 15:41:02 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #19)
&gt; Comment on attachment 381721 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381721&amp;action=review
&gt; 
&gt; &gt; LayoutTests/platform/ios-wk2/TestExpectations:1335
&gt; &gt; -webkit.org/b/199196 [ Release ] imported/mozilla/svg/text/textpath-selection.svg [ Pass ImageOnlyFailure ]
&gt; &gt;  webkit.org/b/199196 [ Release ] imported/mozilla/svg/text/selectSubString-2.svg [ Pass ImageOnlyFailure ]
&gt; 
&gt; I think that &lt;rdar://problem/52124292&gt; tracks both of these.

Good catch — I’ll remove these from the TestExpectations as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583108</commentid>
    <comment_count>21</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-23 15:46:05 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #18)
&gt; Comment on attachment 381721 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381721&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:6866
&gt; &gt; +    [_contentView _startSuppressingSelectionAssistantForReason:WebKit::HideForTesting];
&gt; 
&gt; Can we/should we just hide the view instead of doing this thing that might
&gt; have additional side effects?

I had considered that, but was afraid that would cause more incompatibility (for instance, there are a few places where UITextSelectionView checks if self.alpha == 0, and makes some decisions based on that).

I don’t see any checks for `self.hidden` though, so maybe this is okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583109</commentid>
    <comment_count>22</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-23 15:47:13 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #21)
&gt; (In reply to Tim Horton from comment #18)
&gt; &gt; Comment on attachment 381721 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=381721&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:6866
&gt; &gt; &gt; +    [_contentView _startSuppressingSelectionAssistantForReason:WebKit::HideForTesting];
&gt; &gt; 
&gt; &gt; Can we/should we just hide the view instead of doing this thing that might
&gt; &gt; have additional side effects?
&gt; 
&gt; I had considered that, but was afraid that would cause more incompatibility
&gt; (for instance, there are a few places where UITextSelectionView checks if
&gt; self.alpha == 0, and makes some decisions based on that).
&gt; 
&gt; I don’t see any checks for `self.hidden` though, so maybe this is okay.

Could be on a container we own, instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583143</commentid>
    <comment_count>23</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-23 16:38:57 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #22)
&gt; (In reply to Wenson Hsieh from comment #21)
&gt; &gt; (In reply to Tim Horton from comment #18)
&gt; &gt; &gt; Comment on attachment 381721 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=381721&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:6866
&gt; &gt; &gt; &gt; +    [_contentView _startSuppressingSelectionAssistantForReason:WebKit::HideForTesting];
&gt; &gt; &gt; 
&gt; &gt; &gt; Can we/should we just hide the view instead of doing this thing that might
&gt; &gt; &gt; have additional side effects?
&gt; &gt; 
&gt; &gt; I had considered that, but was afraid that would cause more incompatibility
&gt; &gt; (for instance, there are a few places where UITextSelectionView checks if
&gt; &gt; self.alpha == 0, and makes some decisions based on that).
&gt; &gt; 
&gt; &gt; I don’t see any checks for `self.hidden` though, so maybe this is okay.
&gt; 
&gt; Could be on a container we own, instead?

I think the lowest ancestor of UITextSelectionView that we own is the content view itself :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583147</commentid>
    <comment_count>24</comment_count>
      <attachid>381754</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-23 16:43:11 -0700</bug_when>
    <thetext>Created attachment 381754
Just hide UITextSelectionView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583211</commentid>
    <comment_count>25</comment_count>
      <attachid>381754</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-23 20:25:41 -0700</bug_when>
    <thetext>Comment on attachment 381754
Just hide UITextSelectionView.

Clearing flags on attachment: 381754

Committed r251526: &lt;https://trac.webkit.org/changeset/251526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583212</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-23 20:25:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381547</attachid>
            <date>2019-10-22 08:43:43 -0700</date>
            <delta_ts>2019-10-22 14:22:51 -0700</delta_ts>
            <desc>Repro attempt #1</desc>
            <filename>bug-203247-20191022084342.patch</filename>
            <type>text/plain</type>
            <size>1406705</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
ZWNvbmRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwCmluZGV4IGIyNGNkZmRiYTM1
ODMwNDc0YTA4ZDQzZTEzNmQ2ZWU0N2E5Y2UzOTUuLmUxYTgzMGMwYzgyNDJmOWRjZTE2ZjMyOGRi
ODU5MjY4NzAwZTI2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwCkBAIC0zNSw2ICszNSwxMCBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorc3RhdGljX2Fzc2VydChm
YWxzZSwgIkkganVzdCB3YW50IHJlc3VsdHMgZnJvbSBpT1MgYm90cywgc28gZmFpbCBlYXJseSBo
ZXJlIGZvciBub24taU9TLiIpOworI2VuZGlmCisKIFdhbGxUaW1lIFNlY29uZHM6Om9wZXJhdG9y
KyhXYWxsVGltZSBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gb3RoZXIgKyAqdGhpczsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cKaW5kZXggZjJlZGFlZDVjZmEzYzdiNTEx
MGRkNDUyN2UwOTU0OTY0MjQ3OWY1MS4uY2U4YTNkZGU5YjRhMTRlN2M1Y2UwZTZlNDQxMTliMmZm
OGE4ZWFkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDE0IEBACisyMDE5LTEwLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFtpT1MgMTNdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLnN2ZyBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjEyNDI5
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb2Vz
IHRoaXMgcmVwcm9kdWNlIGluIEVXUz8/CisKKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTAxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0LWV4cGVjdGVkLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUtZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNi1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LWV4cGVj
dGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
Ny5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgt
ZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwOS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTEwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExMC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExMi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMy5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVkLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC1leHBl
Y3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTguc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjAtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYtZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2LnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNy1leHBlY3RlZC5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4LWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjktZXhw
ZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI5LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTMyLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1LnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNi1leHBlY3RlZC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3LWV4cGVjdGVkLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgtZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4LnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOS1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzku
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhw
ZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQxLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0My5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ni5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDguc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LWV4cGVjdGVkLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTAtZXhw
ZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTUwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1
MS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNTEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTUyLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1Mi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTUzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE1NC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTYtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU2LnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ny1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTcuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTktZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU5LnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MC1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjAu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYxLWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2MS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NjItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTYyLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2My1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNjMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTY0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE2NC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjYuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY4LnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OS1leHBlY3RlZC5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjkuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLWV4cGVjdGVkLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MC5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzEtZXhwZWN0
ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcx
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTczLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE3My5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTc0LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3NS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTc2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Ni5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNzctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OS5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODAtZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgwLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MS1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVj
dGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
Mi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMt
ZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTgzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE4NC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTg1LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE4NS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xODYtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTg2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4Ny1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODktZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg5LnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC1leHBlY3RlZC5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTAuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkxLWV4cGVjdGVkLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5My1leHBl
Y3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk0
LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5NC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOTUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTk1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE5Ni1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOTYuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTk3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC1leHBlY3RlZC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDAuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAxLWV4cGVjdGVkLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDMu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA0LWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwNC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MDUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjA1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwNi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDYuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjA3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIwNy5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwOS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLWV4cGVjdGVkLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMy5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTQtZXhwZWN0
ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTUuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjE2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIxNi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMTctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjE3LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMTguc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIwLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMtZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIzLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNC1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4cGVj
dGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIy
NS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjYt
ZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjI2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIyNy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjI4LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyOC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMjktZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjI5LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIzMC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMy1leHBlY3RlZC5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzMuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM0LWV4cGVjdGVkLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM1LnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi1leHBl
Y3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MzYuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM3
LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzNy5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMzgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjM4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIzOS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMzkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQzLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0My5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDQtZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBlY3RlZC5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ni5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDctZXhw
ZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjQ3LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0
OC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNDguc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjQ5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0OS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTAtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjUwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1MS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUzLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NC1leHBlY3RlZC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NS5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTYtZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU2LnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ny1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTcu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI1OC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTktZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjU5LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2MC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNjAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjYxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI2MS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2My1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjYuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY3LWV4cGVjdGVkLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0
ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY4
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OS1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNjkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjcwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI3MC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjcxLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjczLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3My5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc2LWV4cGVjdGVkLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ni5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzctZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LWV4cGVj
dGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3
OS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
ODAtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjgwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI4MS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjgyLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yODMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4NC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4NS5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg2LnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ny1leHBlY3RlZC5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODcuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODktZXhwZWN0ZWQu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg5LnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVj
dGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjkxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5MS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOTItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjkyLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI5My1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOTMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjk0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTYuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS1leHBlY3RlZC5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTkuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC1leHBl
Y3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MDAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAx
LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwMS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMDItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzAyLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwMy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzA0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMwNC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDYuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOS1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDkuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTEtZXhw
ZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzExLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMx
Mi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzEzLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMxMy5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMTQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzE0LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTguc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LWV4cGVjdGVkLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOS5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAtZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIwLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMS1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMyMi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MjMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzIzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMyNC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMjYtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMyNy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjktZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI5LnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMC1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzAuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMxLWV4cGVjdGVkLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0
ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMy
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMzMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzM0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzNC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMzUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzM1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMzNi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMzYuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzM3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzkuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLWV4cGVjdGVkLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDEtZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQzLWV4cGVj
dGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
My5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDQt
ZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzQ0LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM0NS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNDUuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzQ2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0Ni5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUwLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MS1leHBlY3RlZC5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMtZXhwZWN0ZWQu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUzLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NC1leHBl
Y3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NTQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1
LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM1NS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTYtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzU2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM1Ny1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzU4LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNTktZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU5LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjAuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjItZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2My1leHBlY3RlZC5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjMuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY0LWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhw
ZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzY1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
Ni1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNjYuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzY3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2Ny5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzY4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM2OS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzIuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLWV4cGVjdGVkLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3My5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzQtZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM3Ni5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzc3LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3OC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzguc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzc5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3OS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zODAtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgzLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NC1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYtZXhwZWN0
ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg2
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ny1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zODcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzg4LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM4OC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zODktZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzg5LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM5LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM5MC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOTAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzkxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkyLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5My1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTMuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk0LWV4cGVjdGVkLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTYuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk3LWV4cGVj
dGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5
Ny5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgt
ZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzk4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5OS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOTkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwMC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDAxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDMuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNi1leHBlY3RlZC5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDYuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA3LWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDgtZXhw
ZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDA4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
OS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MDkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDEwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQxMC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MTEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDExLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQxMi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEzLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMy5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3RlZC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LWV4cGVjdGVkLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNi5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTctZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTgu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQxOS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Mi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00Mi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MjAtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDIwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQyMS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyMi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MjMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjYtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI2LnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNy1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjcuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVjdGVkLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjktZXhwZWN0
ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI5
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
MC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MzAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDMxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzMS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MzItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQzMy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MzMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDM0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzYuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM3LWV4cGVjdGVkLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4LnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzOS1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzkuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0
ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0MC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDQxLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ0Mi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NDIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDQzLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0My5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ni5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LWV4cGVjdGVkLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OS5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTAtZXhwZWN0
ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUw
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MS1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NTEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDUyLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ1Mi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ1NC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NTYtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ny1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTcuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTktZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU5LnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjAuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYxLWV4cGVj
dGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2
MS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjIt
ZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDYyLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2My1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NjMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDY0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2NC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ2Ni1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjYuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY4LnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS1leHBlY3RlZC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njkuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDctZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLWV4cGVjdGVkLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzEtZXhwZWN0ZWQu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBl
Y3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NzIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcz
LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ3My5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDc0LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NzUuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDc2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ni5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NzctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OS5zdmc6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODAtZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgwLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MS1leHBlY3RlZC5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMtZXhw
ZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDgzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
NC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00ODQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDg1LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ4NS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00ODYtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDg2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ4Ny1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00ODcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODktZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg5LnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC1leHBlY3RlZC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTAuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkxLWV4cGVjdGVkLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkyLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5My1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTMu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk0LWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ5NC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OTUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDk1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5Ni1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OTYuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDk3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ5Ny5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01LnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDAuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTItZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMtZXhwZWN0ZWQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUtZXhwZWN0ZWQu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYtZXhwZWN0
ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhw
ZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgt
ZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTguc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTktZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTkuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYxLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYxLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYyLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYzLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY0LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY1LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3LnN2ZzogQWRkZWQuCisgICAgICAgICog
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4LnN2ZzogQWRkZWQuCisgICAgICAg
ICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC1leHBlY3RlZC5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MS1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MS5zdmc6IEFkZGVk
LgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi1leHBlY3RlZC5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My1leHBlY3RlZC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC1leHBlY3Rl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS1leHBl
Y3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03Ni5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Ny1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03Ny5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03OC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTguc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODAtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODAuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODEuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODItZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcuc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODktZXhwZWN0ZWQuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05LnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxLWV4cGVjdGVkLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyLWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVj
dGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkz
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0LWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk0LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk1LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk2LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk2LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk3LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk4LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk4LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk5LWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk5LnN2ZzogQWRkZWQuCisKIDIwMTgtMTEtMDYgIEFudG9pbmUgUXVp
bnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVwZGF0
ZSBhbGwgdGVzdHMgdG8gbWF0Y2ggdGhlIGxhdGVzdCBBUEkgY2hhbmdlcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3My1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Ny5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xOTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xOTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk4LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIx
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIx
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNy1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIy
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIz
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3My1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjczLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yOTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yOTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMw
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMxMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzE0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMxNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMy
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMy
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMyOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMz
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzQxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ny1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjAtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2OS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3My1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc4LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzgu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgxLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODIt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4
Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODUtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg2LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
ODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzky
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5My5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTkt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5
OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQxMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDE0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQxNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQy
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQyOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzOS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDQxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQzLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDktZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTItZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1My1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ny1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Njguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ny1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3
MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcyLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzIuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3My1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ny5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc4
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Nzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzkuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgxLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODUtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg2LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODYu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00ODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODkuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTAt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5
MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ni5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUw
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ni1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDQ1ZjJlMzlmYjU3M2UyOTEyNDkzNGYwZDVjYjFhNmJi
MDNhYzg1ZC4uMzgwNDgyMDBhNjlkZTBjMDEzNTcyMTllYmU3M2I5OWUxODQzYmJlZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTMzMiw3
ICsxMzMyLDYgQEAgd2Via2l0Lm9yZy9iLzE5OTA3MSBbIFJlbGVhc2UgXSBpbXBvcnRlZC9ibGlu
ay9mYXN0L2Nzcy91c2VyLXNlbGVjdC1ub25lLmh0bWwgWwogCiB3ZWJraXQub3JnL2IvMTkwODgy
IFsgRGVidWcgXSBhbmltYXRpb25zL2NoYW5nZS1vbmUtYW5pbS5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAotd2Via2l0Lm9yZy9iLzE5OTE5NiBbIFJlbGVhc2UgXSBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi5zdmcgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzE5OTE5NiBbIFJlbGVhc2UgXSBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3NlbGVjdFN1YlN0cmluZy0yLnN2ZyBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8xOTkyMTMgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvYmxpbmsvZWRpdGluZy9zZWxlY3Rp
b24vZGVsZXRlRnJvbURvY3VtZW50LWNyYXNoLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381603</attachid>
            <date>2019-10-22 14:22:53 -0700</date>
            <delta_ts>2019-10-22 17:04:49 -0700</delta_ts>
            <desc>Repro attempt #2</desc>
            <filename>bug-203247-20191022142252.patch</filename>
            <type>text/plain</type>
            <size>2699274</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggZThiMjQzNjA1MTUxOGRhMzM4MWQyZjU3NTdmYTYxODZlNjg1M2E3ZC4uMjBiMTZkYWUyYWJl
YjZmZmM5YjIzODVjNGRhNjUwMGU1OTk3Zjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMTQyOCw2ICsxNDI4LDEwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZSgpCiAgICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorc3RhdGljX2Fzc2VydChmYWxzZSwgIkkganVzdCB3YW50IHJlc3VsdHMg
ZnJvbSBpT1MgYm90cywgc28gZmFpbCBlYXJseSBoZXJlIGZvciBub24taU9TLiIpOworI2VuZGlm
CisKIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewogICAgIGlm
ICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCks
IENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjdhYmZkZmIyNWIyZGY0OWEwNmRhMjUyYjc3
YzEyODRmZmIxMDU2OC4uOTdhZmMxOGJmYWU2YTk5ZGFiZTJjZmZhZTcyNDIwNTY2ZGEzMGMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC02ODYxLDYgKzY4NjEsMTQgQEAgLSAodm9pZClfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9u
CiAgICAgW19jb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9uXTsKIH0KIAor
LSAoZGlzcGF0Y2hfYmxvY2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5n
U3RhdGVGb3JUZXN0aW5nCit7CisgICAgW19jb250ZW50VmlldyBfc3RhcnRTdXBwcmVzc2luZ1Nl
bGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OlJlc2V0dGluZ1N0YXRlQmV0d2VlblRl
c3RzXTsKKyAgICByZXR1cm4gW1tbY29udGVudFZpZXcgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRW
aWV3PihfY29udGVudFZpZXcuZ2V0KCkpXSB7CisgICAgICAgIFtjb250ZW50VmlldyBfc3RvcFN1
cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6UmVzZXR0aW5nU3Rh
dGVCZXR3ZWVuVGVzdHNdOworICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOworfQorCiAtIChVSVZp
ZXcgKilfZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldwogewogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IGNlMTYwODJhNGNhZmEzNTRkNzM4N2Y5MjQyNGU2NDFkZmQwM2U0
ODAuLjgyNzZjNjI5NzBjMmJhMzc1ZWJiYTFhYmY0NjE2ZjYwNjhhNmFjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApA
QCAtNTgwLDQgKzU4MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0
RWRnZSkgewogLSAodm9pZClfcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3Rpbmc7
CiAtICh2b2lkKV9wcm9jZXNzRGlkUmVzdW1lRm9yVGVzdGluZzsKIAorLSAoZGlzcGF0Y2hfYmxv
Y2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5nU3RhdGVGb3JUZXN0aW5n
OworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMWE3ODRhNmViNzdlOTdlODdiODE4NGUxNzU1NjAz
NTc5MzE4NTRlYy4uY2Y0OWU1YzA0MTZhMjMxNzJhNDIxMzAzOThlZDY5ODFhYzNiNTBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBT
dXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEVkaXRhYmxl
Um9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IDEgPDwgMCwKICAgICBGb2N1c2VkRWxl
bWVudElzVG9vU21hbGwgPSAxIDw8IDEsCi0gICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmluZyA9IDEg
PDwgMgorICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIsCisgICAgUmVzZXR0aW5n
U3RhdGVCZXR3ZWVuVGVzdHMgPSAxIDw8IDMsCiB9OwogCiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyB7CkBAIC01NTgsNiArNTU5LDkgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIAog
LSAodm9pZClfZGlkQ2hhbmdlTGlua1ByZXZpZXdBdmFpbGFiaWxpdHk7CiAKKy0gKHZvaWQpX3N0
YXJ0U3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246KFdlYktpdDo6U3VwcHJl
c3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb24pcmVhc29uOworLSAodm9pZClfc3RvcFN1cHByZXNz
aW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOihXZWJLaXQ6OlN1cHByZXNzU2VsZWN0aW9u
QXNzaXN0YW50UmVhc29uKXJlYXNvbjsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRl
eCA2ODBkMmUyNDYxNzFjYzY2Y2MzNmJmYWI0ZWVkODNkNTdkYmFhZTQ5Li5hZTk4NDU3MDc5NTZi
MDViYTEyMzQ2MGYyNDRkMGUyMmRiMzMxYzU3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgIkluc3RhbmNlTWV0aG9k
U3dpenpsZXIuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRl
IDx3dGYvQmxvY2tQdHIuaD4KKyNlbmRpZgorCiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogT0JKQ19D
TEFTUyBVSUtleWJvYXJkSW5wdXRNb2RlOwogT0JKQ19DTEFTUyBXS1dlYlZpZXdDb25maWd1cmF0
aW9uOwpAQCAtNTc5LDYgKzU4Myw3IEBAIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tBcnJh
eVJlZj4gbV9vcGVuUGFuZWxGaWxlVVJMczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gbV9vcGVuUGFuZWxGaWxlVVJMc01lZGlhSWNvbjsKKyAg
ICBCbG9ja1B0cjx2b2lkKCk+IG1fd2ViVmlld1Jlc2V0QmxvY2s7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxFdmVudFNlbmRlclByb3h5PiBtX2V2ZW50U2VuZGVyUHJveHk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KaW5kZXgg
NjYxZjI4ZWIzZjZjZDIxYTkxZGZhNzBlM2VhZTczOThjNmIwOTY5YS4uMmIwYjYyMzJmZTVlMWU0
NzI2M2ZkOWJmNjYwOGI0ODA4NDQ1M2RlNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQpAQCAtMzE1LDYgKzMxNSwzOSBAQCBzdGF0aWMg
dm9pZCByZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiBpbmZvLCBjb25zdCB2b2lkKiwgc2l6
ZV90KQogfQogI2VuZGlmCiAKK3N0YXRpYyBCT09MIGZvckVhY2hWaWV3SW5IaWVyYXJjaHkoVUlW
aWV3ICp2aWV3LCB2b2lkKF5tYXBGdW5jdGlvbikoVUlWaWV3ICpzdWJ2aWV3LCBCT09MICpzdG9w
KSkKK3sKKyAgICBCT09MIHN0b3AgPSBOTzsKKyAgICBtYXBGdW5jdGlvbih2aWV3LCAmc3RvcCk7
CisgICAgaWYgKHN0b3ApCisgICAgICAgIHJldHVybiBZRVM7CisKKyAgICBmb3IgKFVJVmlldyAq
c3VidmlldyBpbiB2aWV3LnN1YnZpZXdzKSB7CisgICAgICAgIHN0b3AgPSBmb3JFYWNoVmlld0lu
SGllcmFyY2h5KHN1YnZpZXcsIG1hcEZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKHN0b3ApCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHN0b3A7Cit9CisKK3N0YXRpYyBOU0Fy
cmF5PFVJVmlldyAqPiAqZmluZEFsbFZpZXdzSW5IaWVyYXJjaHlPZlR5cGUoVUlWaWV3ICp2aWV3
LCBDbGFzcyB2aWV3Q2xhc3MpCit7CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IHZpZXdzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAg
Zm9yRWFjaFZpZXdJbkhpZXJhcmNoeSh2aWV3LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3Rv
cCkgeworICAgICAgICBpZiAoW3N1YnZpZXcgaXNLaW5kT2ZDbGFzczp2aWV3Q2xhc3NdKQorICAg
ICAgICAgICAgW3ZpZXdzIGFkZE9iamVjdDpzdWJ2aWV3XTsKKyAgICB9KTsKKyAgICByZXR1cm4g
dmlld3MuYXV0b3JlbGVhc2UoKTsKK30KKworc3RhdGljIE5TU3RyaW5nICppbmxpbmVEZXNjcmlw
dGlvbihOU0FycmF5ICpvYmplY3RzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpzdHJpbmdzID0g
W05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5Om9iamVjdHMuY291bnRdOworICAgIGZv
ciAoaWQgb2JqZWN0IGluIG9iamVjdHMpCisgICAgICAgIFtzdHJpbmdzIGFkZE9iamVjdDpbb2Jq
ZWN0IGRlc2NyaXB0aW9uXV07CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiWyVAXSIsIFtzdHJpbmdzIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiwgIl1dOworfQor
CiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdElt
YWdlKCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0zNDUsNiArMzc4
LDE1IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBz
aG90SW1hZ2UoKQogICAgIHJldHVybiByZXN1bHQ7CiAKICNlbHNlCisgICAgTlNMb2coQCI8V0s+
OiAiKTsKKyAgICBOU0xvZyhAIjxXSz46ICoqKiBUQUtJTkcgU05BUFNIT1QgRk9SICVAICoqKiIs
IFtbcGxhdGZvcm1WaWV3KCkgVVJMXSBwYXRoXSk7CisgICAgZm9yIChVSVZpZXcgKnZpZXcgaW4g
ZmluZEFsbFZpZXdzSW5IaWVyYXJjaHlPZlR5cGUocGxhdGZvcm1WaWV3KCksIE5TQ2xhc3NGcm9t
U3RyaW5nKEAiVUlUZXh0U2VsZWN0aW9uVmlldyIpKSkgeworICAgICAgICBmb3JFYWNoVmlld0lu
SGllcmFyY2h5KHZpZXcsIF4oVUlWaWV3ICpzdWJ2aWV3LCBCT09MICpzdG9wKSB7CisgICAgICAg
ICAgICBOU0xvZyhAIjxXSz46IFRoZSBhbmltYXRpb25zIG9uICVAIGFyZTogJUAiLCBzdWJ2aWV3
LCBpbmxpbmVEZXNjcmlwdGlvbihzdWJ2aWV3LmxheWVyLmFuaW1hdGlvbktleXMpKTsKKyAgICAg
ICAgfSk7CisgICAgfQorICAgIE5TTG9nKEAiPFdLPjogIik7CisKICAgICBDR0Zsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yID0gMjsgLy8gRklYTUU6IGhhcmRjb2RlIDJ4IGZvciBub3cuIEluIGZ1dHVy
ZSB3ZSBjb3VsZCByZXNwZWN0IDF4IGFuZCAzeCBhcyB3ZSBkbyBvbiBNYWMuCiAgICAgQ0FUcmFu
c2Zvcm0zRCB0cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGRldmljZVNjYWxlRmFj
dG9yLCBkZXZpY2VTY2FsZUZhY3RvciwgMSk7CiAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvQ2hhbmdlTG9nCmluZGV4IGYyZWRhZWQ1Y2ZhM2M3YjUxMTBkZDQ1MjdlMDk1NDk2NDI0Nzlm
NTEuLmJkYjg2ZDBkNDVmZGEyZDExYjEwMGMxYjJmZGE5MjExNGUwZjZhNTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTAtMjIg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyAx
M10gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24uc3ZnIGlzIGZs
YWt5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMy
NDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUyMTI0MjkyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvZXMgdGhpcyByZXByb2R1Y2UgaW4gRVdT
Pz8KKwogMjAxOC0xMS0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWIgQW5pbWF0aW9uc10gVXBkYXRlIGFsbCB0ZXN0cyB0byBtYXRjaCB0aGUgbGF0
ZXN0IEFQSSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTAwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIx
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIy
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIz
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjczLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODAuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ny1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTAtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMx
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMz
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMz
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzktZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODItZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ny1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zOTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zOTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3My1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ny5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTExLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUx
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUx
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNy1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUy
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUz
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3My1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTczLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Ny5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Nzguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYw
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjExLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYxMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjE0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYxNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYy
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYy
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYyOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYz
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjQxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDguc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTAuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1My1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ny1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjAtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2OS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3
Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3My1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjczLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc0LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzUuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Ny5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc4LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Nzgu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgxLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODIt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4
Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODMuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4NS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg2LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ni1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODYuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
ODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkwLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjky
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5My5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ni5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTkt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5
OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcw
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcw
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzExLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcx
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcxMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzE0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcxNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcx
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcy
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcyOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTczMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTczMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTczMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTczNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTczOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczOS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzQxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQzLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDktZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTItZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1My1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ny1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY1LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Njguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ny1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcwLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzIuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3My1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzczLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc0
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzUuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Ny5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc4
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3OC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Nzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzkuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc5LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4
MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgxLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgyLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODUtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4NS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg2LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ni1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODYu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03ODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4
OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODkuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTAt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5
MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTIuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5My5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ni5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODExLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgxMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODE0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgxNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgx
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgy
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNy1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgyOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mjkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgz
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgzNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzOS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODQxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0My1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQzLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Ny5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1
Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Njguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY4LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcwLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3My1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODczLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Ny5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3OC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Nzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc5LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgwLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODAuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgy
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODMuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODUtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4NS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg2
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Ni1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
ODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04ODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg5LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODkuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5My5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkw
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkxMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTE0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkxNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTky
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTky
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNy1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkyOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkz
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkzNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzOS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTQxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0My1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQzLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Ny5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Njguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzIuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3My1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ni1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ny5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Nzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODUtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Ni1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05ODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05ODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODcuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5My5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5NC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDQ0NWYyZTM5ZmI1NzNlMjkxMjQ5MzRmMGQ1Y2IxYTZiYjAzYWM4NWQuLjM4MDQ4MjAwYTY5
ZGUwYzAxMzU3MjE5ZWJlNzNiOTllMTg0M2JiZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzMzIsNyArMTMzMiw2IEBAIHdlYmtpdC5v
cmcvYi8xOTkwNzEgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9jc3MvdXNlci1zZWxl
Y3Qtbm9uZS5odG1sIFsKIAogd2Via2l0Lm9yZy9iLzE5MDg4MiBbIERlYnVnIF0gYW5pbWF0aW9u
cy9jaGFuZ2Utb25lLWFuaW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8x
OTkxOTYgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24uc3ZnIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTkxOTYg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zZWxlY3RTdWJTdHJpbmctMi5z
dmcgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTk5MjEzIFsgUmVs
ZWFzZSBdIGltcG9ydGVkL2JsaW5rL2VkaXRpbmcvc2VsZWN0aW9uL2RlbGV0ZUZyb21Eb2N1bWVu
dC1jcmFzaC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381635</attachid>
            <date>2019-10-22 17:14:07 -0700</date>
            <delta_ts>2019-10-22 17:14:17 -0700</delta_ts>
            <desc>Repro attempt #3</desc>
            <filename>bug-203247-20191022171406.patch</filename>
            <type>text/plain</type>
            <size>28</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDI3Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381636</attachid>
            <date>2019-10-22 17:17:54 -0700</date>
            <delta_ts>2019-10-23 09:45:53 -0700</delta_ts>
            <desc>Repro attempt #3</desc>
            <filename>bug-203247-20191022171753.patch</filename>
            <type>text/plain</type>
            <size>4050675</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggZThiMjQzNjA1MTUxOGRhMzM4MWQyZjU3NTdmYTYxODZlNjg1M2E3ZC4uMjBiMTZkYWUyYWJl
YjZmZmM5YjIzODVjNGRhNjUwMGU1OTk3Zjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMTQyOCw2ICsxNDI4LDEwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZSgpCiAgICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorc3RhdGljX2Fzc2VydChmYWxzZSwgIkkganVzdCB3YW50IHJlc3VsdHMg
ZnJvbSBpT1MgYm90cywgc28gZmFpbCBlYXJseSBoZXJlIGZvciBub24taU9TLiIpOworI2VuZGlm
CisKIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewogICAgIGlm
ICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCks
IENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjdhYmZkZmIyNWIyZGY0OWEwNmRhMjUyYjc3
YzEyODRmZmIxMDU2OC4uOTdhZmMxOGJmYWU2YTk5ZGFiZTJjZmZhZTcyNDIwNTY2ZGEzMGMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC02ODYxLDYgKzY4NjEsMTQgQEAgLSAodm9pZClfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9u
CiAgICAgW19jb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9uXTsKIH0KIAor
LSAoZGlzcGF0Y2hfYmxvY2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5n
U3RhdGVGb3JUZXN0aW5nCit7CisgICAgW19jb250ZW50VmlldyBfc3RhcnRTdXBwcmVzc2luZ1Nl
bGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OlJlc2V0dGluZ1N0YXRlQmV0d2VlblRl
c3RzXTsKKyAgICByZXR1cm4gW1tbY29udGVudFZpZXcgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRW
aWV3PihfY29udGVudFZpZXcuZ2V0KCkpXSB7CisgICAgICAgIFtjb250ZW50VmlldyBfc3RvcFN1
cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6UmVzZXR0aW5nU3Rh
dGVCZXR3ZWVuVGVzdHNdOworICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOworfQorCiAtIChVSVZp
ZXcgKilfZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldwogewogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IGNlMTYwODJhNGNhZmEzNTRkNzM4N2Y5MjQyNGU2NDFkZmQwM2U0
ODAuLjgyNzZjNjI5NzBjMmJhMzc1ZWJiYTFhYmY0NjE2ZjYwNjhhNmFjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApA
QCAtNTgwLDQgKzU4MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0
RWRnZSkgewogLSAodm9pZClfcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3Rpbmc7
CiAtICh2b2lkKV9wcm9jZXNzRGlkUmVzdW1lRm9yVGVzdGluZzsKIAorLSAoZGlzcGF0Y2hfYmxv
Y2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5nU3RhdGVGb3JUZXN0aW5n
OworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMWE3ODRhNmViNzdlOTdlODdiODE4NGUxNzU1NjAz
NTc5MzE4NTRlYy4uY2Y0OWU1YzA0MTZhMjMxNzJhNDIxMzAzOThlZDY5ODFhYzNiNTBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBT
dXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEVkaXRhYmxl
Um9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IDEgPDwgMCwKICAgICBGb2N1c2VkRWxl
bWVudElzVG9vU21hbGwgPSAxIDw8IDEsCi0gICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmluZyA9IDEg
PDwgMgorICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIsCisgICAgUmVzZXR0aW5n
U3RhdGVCZXR3ZWVuVGVzdHMgPSAxIDw8IDMsCiB9OwogCiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyB7CkBAIC01NTgsNiArNTU5LDkgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIAog
LSAodm9pZClfZGlkQ2hhbmdlTGlua1ByZXZpZXdBdmFpbGFiaWxpdHk7CiAKKy0gKHZvaWQpX3N0
YXJ0U3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246KFdlYktpdDo6U3VwcHJl
c3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb24pcmVhc29uOworLSAodm9pZClfc3RvcFN1cHByZXNz
aW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOihXZWJLaXQ6OlN1cHByZXNzU2VsZWN0aW9u
QXNzaXN0YW50UmVhc29uKXJlYXNvbjsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY20ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc2NtLnB5CmluZGV4IGFhMWY3ZWE5ZmQ4YWM4YzI3ODgxNmQ5ZTNjMjgzYzVkM2Fm
YjUzNDMuLjYzYjdhYjhlYTcyNjhkYTdiNjgyMzJhNDVmOTA2MmE5ODhkNTQ5NjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQpAQCAt
NjgsMTQgKzY4LDE3IEBAIGNsYXNzIFNDTToKICAgICAjIEEgd3JhcHBlciB1c2VkIGJ5IHN1YmNs
YXNzZXMgdG8gY3JlYXRlIHByb2Nlc3Nlcy4KICAgICBkZWYgcnVuKHNlbGYsIGFyZ3MsIGN3ZD1O
b25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPU5vbmUsIGlnbm9yZV9lcnJvcnM9RmFsc2Us
IHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVybl9zdGRlcnI9VHJ1ZSwgZGVjb2RlX291dHB1
dD1UcnVlKToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHNldCBjd2QgYXBwcm9wcmlhdGVs
eS4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChhcmdzLAotICAg
ICAgICAgICAgY3dkPWN3ZCwKLSAgICAgICAgICAgIGlucHV0PWlucHV0LAotICAgICAgICAgICAg
ZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAotICAgICAgICAgICAgaWdub3JlX2Vycm9ycz1p
Z25vcmVfZXJyb3JzLAotICAgICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1yZXR1cm5fZXhpdF9j
b2RlLAotICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1yZXR1cm5fc3RkZXJyLAotICAgICAgICAg
ICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsCisgICAgICAgICAgICAg
ICAgY3dkPWN3ZCwKKyAgICAgICAgICAgICAgICBpbnB1dD1pbnB1dCwKKyAgICAgICAgICAgICAg
ICBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgaWdub3JlX2Vy
cm9ycz1pZ25vcmVfZXJyb3JzLAorICAgICAgICAgICAgICAgIHJldHVybl9leGl0X2NvZGU9cmV0
dXJuX2V4aXRfY29kZSwKKyAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPXJldHVybl9zdGRl
cnIsCisgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gIiIKIAogICAgICMg
U0NNIGFsd2F5cyByZXR1cm5zIHJlcG9zaXRvcnkgcmVsYXRpdmUgcGF0aCwgYnV0IHNvbWV0aW1l
cyB3ZSBuZWVkCiAgICAgIyBhYnNvbHV0ZSBwYXRocyB0byBwYXNzIHRvIHJtLCBldGMuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IGRk
ODY1YzBiODcyODI3YzYxZWVmYjk4MjVmMGUwMzgwMDM3YjAzZGUuLmRhYTI3NWY0YTRmOWM3ZTcw
MWQ0N2NkNDQ2N2UzZjhhZGFhYjQxNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CkBAIC02NCwxMCArNjQsMTAgQEAgY2xhc3MgQ2hlY2tT
dHlsZShBYnN0cmFjdFN0ZXApOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLmRlcHJlY2F0ZWRf
cG9ydCgpLmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCkgKyBhcmdzLCBjd2Q9c2VsZi5fdG9v
bC5zY20oKS5jaGVja291dF9yb290KQotICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHJlLXJh
aXNlIHRoZSBleGNlcHRpb24gaGVyZSB0byBoYXZlIHRoZQogICAgICAgICAgICAgICAgICMgc3R5
bGUtcXVldWUgZG8gdGhlIHJpZ2h0IHRoaW5nLgotICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAg
ICAgICAgICAgICAgICBwcmludCBlCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9vbC51c2Vy
LmNvbmZpcm0oIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT8iKToKICAgICAgICAg
ICAgICAgICBzZWxmLl9leGl0KDEpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKaW5kZXggNjgwZDJlMjQ2MTcxY2M2NmNjMzZiZmFiNGVlZDgzZDU3ZGJhYWU0OS4uYWU5ODQ1
NzA3OTU2YjA1YmExMjM0NjBmMjQ0ZDBlMjJkYjMzMWM1NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlICJJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjZW5kaWYKKwogT0JKQ19DTEFTUyBOU1N0cmluZzsK
IE9CSkNfQ0xBU1MgVUlLZXlib2FyZElucHV0TW9kZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbjsKQEAgLTU3OSw2ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHNNZWRpYUlj
b247CisgICAgQmxvY2tQdHI8dm9pZCgpPiBtX3dlYlZpZXdSZXNldEJsb2NrOwogI2VuZGlmCiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXJQcm94eT4gbV9ldmVudFNlbmRlclByb3h5
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
CmluZGV4IDY2MWYyOGViM2Y2Y2QyMWE5MWRmYTcwZTNlYWU3Mzk4YzZiMDk2OWEuLjJiMGI2MjMy
ZmU1ZTFlNDcyNjNmZDliZjY2MDhiNDgwODQ0NTNkZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTMxNSw2ICszMTUsMzkgQEAg
c3RhdGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogaW5mbywgY29uc3Qgdm9p
ZCosIHNpemVfdCkKIH0KICNlbmRpZgogCitzdGF0aWMgQk9PTCBmb3JFYWNoVmlld0luSGllcmFy
Y2h5KFVJVmlldyAqdmlldywgdm9pZChebWFwRnVuY3Rpb24pKFVJVmlldyAqc3VidmlldywgQk9P
TCAqc3RvcCkpCit7CisgICAgQk9PTCBzdG9wID0gTk87CisgICAgbWFwRnVuY3Rpb24odmlldywg
JnN0b3ApOworICAgIGlmIChzdG9wKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgZm9yIChV
SVZpZXcgKnN1YnZpZXcgaW4gdmlldy5zdWJ2aWV3cykgeworICAgICAgICBzdG9wID0gZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeShzdWJ2aWV3LCBtYXBGdW5jdGlvbik7CisgICAgICAgIGlmIChzdG9w
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBzdG9wOworfQorCitzdGF0
aWMgTlNBcnJheTxVSVZpZXcgKj4gKmZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKFVJVmll
dyAqdmlldywgQ2xhc3Mgdmlld0NsYXNzKQoreworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OworICAgIGZvckVhY2hWaWV3SW5IaWVyYXJjaHkodmlldywgXihVSVZpZXcgKnN1YnZpZXcsIEJP
T0wgKnN0b3ApIHsKKyAgICAgICAgaWYgKFtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6dmlld0NsYXNz
XSkKKyAgICAgICAgICAgIFt2aWV3cyBhZGRPYmplY3Q6c3Vidmlld107CisgICAgfSk7CisgICAg
cmV0dXJuIHZpZXdzLmF1dG9yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqaW5saW5l
RGVzY3JpcHRpb24oTlNBcnJheSAqb2JqZWN0cykKK3sKKyAgICBOU011dGFibGVBcnJheSAqc3Ry
aW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpvYmplY3RzLmNvdW50XTsK
KyAgICBmb3IgKGlkIG9iamVjdCBpbiBvYmplY3RzKQorICAgICAgICBbc3RyaW5ncyBhZGRPYmpl
Y3Q6W29iamVjdCBkZXNjcmlwdGlvbl1dOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIlslQF0iLCBbc3RyaW5ncyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJd
XTsKK30KKwogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25h
cHNob3RJbWFnZSgpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMzQ1
LDYgKzM3OCwxNSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5k
b3dTbmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gcmVzdWx0OwogCiAjZWxzZQorICAgIE5TTG9n
KEAiPFdLPjogIik7CisgICAgTlNMb2coQCI8V0s+OiAqKiogVEFLSU5HIFNOQVBTSE9UIEZPUiAl
QCAqKioiLCBbW3BsYXRmb3JtVmlldygpIFVSTF0gcGF0aF0pOworICAgIGZvciAoVUlWaWV3ICp2
aWV3IGluIGZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKHBsYXRmb3JtVmlldygpLCBOU0Ns
YXNzRnJvbVN0cmluZyhAIlVJVGV4dFNlbGVjdGlvblZpZXciKSkpIHsKKyAgICAgICAgZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeSh2aWV3LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkgewor
ICAgICAgICAgICAgTlNMb2coQCI8V0s+OiBUaGUgYW5pbWF0aW9ucyBvbiAlQCBhcmU6ICVAIiwg
c3VidmlldywgaW5saW5lRGVzY3JpcHRpb24oc3Vidmlldy5sYXllci5hbmltYXRpb25LZXlzKSk7
CisgICAgICAgIH0pOworICAgIH0KKyAgICBOU0xvZyhAIjxXSz46ICIpOworCiAgICAgQ0dGbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDI7IC8vIEZJWE1FOiBoYXJkY29kZSAyeCBmb3Igbm93LiBJ
biBmdXR1cmUgd2UgY291bGQgcmVzcGVjdCAxeCBhbmQgM3ggYXMgd2UgZG8gb24gTWFjLgogICAg
IENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IsIDEpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL0NoYW5nZUxvZwppbmRleCBmMmVkYWVkNWNmYTNjN2I1MTEwZGQ0NTI3ZTA5NTQ5
NjQyNDc5ZjUxLi5iZGI4NmQwZDQ1ZmRhMmQxMWIxMDBjMWIyZmRhOTIxMTRlMGY2YTU2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5
LTEwLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1MgMTNdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLnN2
ZyBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjEyNDI5Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb2VzIHRoaXMgcmVwcm9kdWNl
IGluIEVXUz8/CisKIDIwMTgtMTEtMDYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVwZGF0ZSBhbGwgdGVzdHMgdG8gbWF0Y2gg
dGhlIGxhdGVzdCBBUEkgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjgu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTIuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcxLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgzLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDYuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMi1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQwLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQxLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUzLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjAuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ny1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjkuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3My5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4My1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ny5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTYu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDAuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDkuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEwLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjExLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE5LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIzLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI4LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0My5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1My1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ny5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzYtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTkuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNy1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0My5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDUuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDYtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcxLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzczLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Nzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc5LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg3LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg4LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkxLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzky
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTUuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTYtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjMuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Mjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Mzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQxLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1MS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYxLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYy
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Mi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgzLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ny5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MDAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIx
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjUtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjYuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjcuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIz
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ny5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjky
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDkt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMw
OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMx
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMy
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDAt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDIuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEzLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTYtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQy
MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ni1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUw
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDgtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUx
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUy
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Nzguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYw
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjExLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYx
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYy
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYz
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjczLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODAuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ny1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTAtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTUtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ni5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzExLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcx
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTczMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTczNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ny1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzczLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzktZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODItZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ni1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ny1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODExLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mjkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgz
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3MS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3My1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Ny5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Ni1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk4LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNy1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTky
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkz
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3My1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzMtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ny5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3OC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDQ0NWYyZTM5
ZmI1NzNlMjkxMjQ5MzRmMGQ1Y2IxYTZiYjAzYWM4NWQuLjM4MDQ4MjAwYTY5ZGUwYzAxMzU3MjE5
ZWJlNzNiOTllMTg0M2JiZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEzMzIsNyArMTMzMiw2IEBAIHdlYmtpdC5vcmcvYi8xOTkwNzEg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9jc3MvdXNlci1zZWxlY3Qtbm9uZS5odG1s
IFsKIAogd2Via2l0Lm9yZy9iLzE5MDg4MiBbIERlYnVnIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25l
LWFuaW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxl
YXNlIF0gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24uc3ZnIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxlYXNlIF0g
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zZWxlY3RTdWJTdHJpbmctMi5zdmcgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTk5MjEzIFsgUmVsZWFzZSBdIGltcG9y
dGVkL2JsaW5rL2VkaXRpbmcvc2VsZWN0aW9uL2RlbGV0ZUZyb21Eb2N1bWVudC1jcmFzaC5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381653</attachid>
            <date>2019-10-22 22:07:36 -0700</date>
            <delta_ts>2019-10-23 09:45:59 -0700</delta_ts>
            <desc>Attempt #4</desc>
            <filename>bug-203247-20191022220734.patch</filename>
            <type>text/plain</type>
            <size>4050675</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggZThiMjQzNjA1MTUxOGRhMzM4MWQyZjU3NTdmYTYxODZlNjg1M2E3ZC4uMjBiMTZkYWUyYWJl
YjZmZmM5YjIzODVjNGRhNjUwMGU1OTk3Zjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMTQyOCw2ICsxNDI4LDEwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZSgpCiAgICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorc3RhdGljX2Fzc2VydChmYWxzZSwgIkkganVzdCB3YW50IHJlc3VsdHMg
ZnJvbSBpT1MgYm90cywgc28gZmFpbCBlYXJseSBoZXJlIGZvciBub24taU9TLiIpOworI2VuZGlm
CisKIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewogICAgIGlm
ICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCks
IENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjdhYmZkZmIyNWIyZGY0OWEwNmRhMjUyYjc3
YzEyODRmZmIxMDU2OC4uOTdhZmMxOGJmYWU2YTk5ZGFiZTJjZmZhZTcyNDIwNTY2ZGEzMGMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC02ODYxLDYgKzY4NjEsMTQgQEAgLSAodm9pZClfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9u
CiAgICAgW19jb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9uXTsKIH0KIAor
LSAoZGlzcGF0Y2hfYmxvY2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5n
U3RhdGVGb3JUZXN0aW5nCit7CisgICAgW19jb250ZW50VmlldyBfc3RhcnRTdXBwcmVzc2luZ1Nl
bGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OlJlc2V0dGluZ1N0YXRlQmV0d2VlblRl
c3RzXTsKKyAgICByZXR1cm4gW1tbY29udGVudFZpZXcgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRW
aWV3PihfY29udGVudFZpZXcuZ2V0KCkpXSB7CisgICAgICAgIFtjb250ZW50VmlldyBfc3RvcFN1
cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6UmVzZXR0aW5nU3Rh
dGVCZXR3ZWVuVGVzdHNdOworICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOworfQorCiAtIChVSVZp
ZXcgKilfZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldwogewogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IGNlMTYwODJhNGNhZmEzNTRkNzM4N2Y5MjQyNGU2NDFkZmQwM2U0
ODAuLjgyNzZjNjI5NzBjMmJhMzc1ZWJiYTFhYmY0NjE2ZjYwNjhhNmFjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApA
QCAtNTgwLDQgKzU4MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0
RWRnZSkgewogLSAodm9pZClfcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3Rpbmc7
CiAtICh2b2lkKV9wcm9jZXNzRGlkUmVzdW1lRm9yVGVzdGluZzsKIAorLSAoZGlzcGF0Y2hfYmxv
Y2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5nU3RhdGVGb3JUZXN0aW5n
OworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMWE3ODRhNmViNzdlOTdlODdiODE4NGUxNzU1NjAz
NTc5MzE4NTRlYy4uY2Y0OWU1YzA0MTZhMjMxNzJhNDIxMzAzOThlZDY5ODFhYzNiNTBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBT
dXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEVkaXRhYmxl
Um9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IDEgPDwgMCwKICAgICBGb2N1c2VkRWxl
bWVudElzVG9vU21hbGwgPSAxIDw8IDEsCi0gICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmluZyA9IDEg
PDwgMgorICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIsCisgICAgUmVzZXR0aW5n
U3RhdGVCZXR3ZWVuVGVzdHMgPSAxIDw8IDMsCiB9OwogCiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyB7CkBAIC01NTgsNiArNTU5LDkgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIAog
LSAodm9pZClfZGlkQ2hhbmdlTGlua1ByZXZpZXdBdmFpbGFiaWxpdHk7CiAKKy0gKHZvaWQpX3N0
YXJ0U3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246KFdlYktpdDo6U3VwcHJl
c3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb24pcmVhc29uOworLSAodm9pZClfc3RvcFN1cHByZXNz
aW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOihXZWJLaXQ6OlN1cHByZXNzU2VsZWN0aW9u
QXNzaXN0YW50UmVhc29uKXJlYXNvbjsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY20ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc2NtLnB5CmluZGV4IGFhMWY3ZWE5ZmQ4YWM4YzI3ODgxNmQ5ZTNjMjgzYzVkM2Fm
YjUzNDMuLjYzYjdhYjhlYTcyNjhkYTdiNjgyMzJhNDVmOTA2MmE5ODhkNTQ5NjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQpAQCAt
NjgsMTQgKzY4LDE3IEBAIGNsYXNzIFNDTToKICAgICAjIEEgd3JhcHBlciB1c2VkIGJ5IHN1YmNs
YXNzZXMgdG8gY3JlYXRlIHByb2Nlc3Nlcy4KICAgICBkZWYgcnVuKHNlbGYsIGFyZ3MsIGN3ZD1O
b25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPU5vbmUsIGlnbm9yZV9lcnJvcnM9RmFsc2Us
IHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVybl9zdGRlcnI9VHJ1ZSwgZGVjb2RlX291dHB1
dD1UcnVlKToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHNldCBjd2QgYXBwcm9wcmlhdGVs
eS4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChhcmdzLAotICAg
ICAgICAgICAgY3dkPWN3ZCwKLSAgICAgICAgICAgIGlucHV0PWlucHV0LAotICAgICAgICAgICAg
ZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAotICAgICAgICAgICAgaWdub3JlX2Vycm9ycz1p
Z25vcmVfZXJyb3JzLAotICAgICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1yZXR1cm5fZXhpdF9j
b2RlLAotICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1yZXR1cm5fc3RkZXJyLAotICAgICAgICAg
ICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsCisgICAgICAgICAgICAg
ICAgY3dkPWN3ZCwKKyAgICAgICAgICAgICAgICBpbnB1dD1pbnB1dCwKKyAgICAgICAgICAgICAg
ICBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgaWdub3JlX2Vy
cm9ycz1pZ25vcmVfZXJyb3JzLAorICAgICAgICAgICAgICAgIHJldHVybl9leGl0X2NvZGU9cmV0
dXJuX2V4aXRfY29kZSwKKyAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPXJldHVybl9zdGRl
cnIsCisgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gIiIKIAogICAgICMg
U0NNIGFsd2F5cyByZXR1cm5zIHJlcG9zaXRvcnkgcmVsYXRpdmUgcGF0aCwgYnV0IHNvbWV0aW1l
cyB3ZSBuZWVkCiAgICAgIyBhYnNvbHV0ZSBwYXRocyB0byBwYXNzIHRvIHJtLCBldGMuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IGRk
ODY1YzBiODcyODI3YzYxZWVmYjk4MjVmMGUwMzgwMDM3YjAzZGUuLmRhYTI3NWY0YTRmOWM3ZTcw
MWQ0N2NkNDQ2N2UzZjhhZGFhYjQxNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CkBAIC02NCwxMCArNjQsMTAgQEAgY2xhc3MgQ2hlY2tT
dHlsZShBYnN0cmFjdFN0ZXApOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLmRlcHJlY2F0ZWRf
cG9ydCgpLmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCkgKyBhcmdzLCBjd2Q9c2VsZi5fdG9v
bC5zY20oKS5jaGVja291dF9yb290KQotICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHJlLXJh
aXNlIHRoZSBleGNlcHRpb24gaGVyZSB0byBoYXZlIHRoZQogICAgICAgICAgICAgICAgICMgc3R5
bGUtcXVldWUgZG8gdGhlIHJpZ2h0IHRoaW5nLgotICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAg
ICAgICAgICAgICAgICBwcmludCBlCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9vbC51c2Vy
LmNvbmZpcm0oIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT8iKToKICAgICAgICAg
ICAgICAgICBzZWxmLl9leGl0KDEpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKaW5kZXggNjgwZDJlMjQ2MTcxY2M2NmNjMzZiZmFiNGVlZDgzZDU3ZGJhYWU0OS4uYWU5ODQ1
NzA3OTU2YjA1YmExMjM0NjBmMjQ0ZDBlMjJkYjMzMWM1NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlICJJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjZW5kaWYKKwogT0JKQ19DTEFTUyBOU1N0cmluZzsK
IE9CSkNfQ0xBU1MgVUlLZXlib2FyZElucHV0TW9kZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbjsKQEAgLTU3OSw2ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHNNZWRpYUlj
b247CisgICAgQmxvY2tQdHI8dm9pZCgpPiBtX3dlYlZpZXdSZXNldEJsb2NrOwogI2VuZGlmCiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXJQcm94eT4gbV9ldmVudFNlbmRlclByb3h5
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
CmluZGV4IDY2MWYyOGViM2Y2Y2QyMWE5MWRmYTcwZTNlYWU3Mzk4YzZiMDk2OWEuLjJiMGI2MjMy
ZmU1ZTFlNDcyNjNmZDliZjY2MDhiNDgwODQ0NTNkZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTMxNSw2ICszMTUsMzkgQEAg
c3RhdGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogaW5mbywgY29uc3Qgdm9p
ZCosIHNpemVfdCkKIH0KICNlbmRpZgogCitzdGF0aWMgQk9PTCBmb3JFYWNoVmlld0luSGllcmFy
Y2h5KFVJVmlldyAqdmlldywgdm9pZChebWFwRnVuY3Rpb24pKFVJVmlldyAqc3VidmlldywgQk9P
TCAqc3RvcCkpCit7CisgICAgQk9PTCBzdG9wID0gTk87CisgICAgbWFwRnVuY3Rpb24odmlldywg
JnN0b3ApOworICAgIGlmIChzdG9wKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgZm9yIChV
SVZpZXcgKnN1YnZpZXcgaW4gdmlldy5zdWJ2aWV3cykgeworICAgICAgICBzdG9wID0gZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeShzdWJ2aWV3LCBtYXBGdW5jdGlvbik7CisgICAgICAgIGlmIChzdG9w
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBzdG9wOworfQorCitzdGF0
aWMgTlNBcnJheTxVSVZpZXcgKj4gKmZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKFVJVmll
dyAqdmlldywgQ2xhc3Mgdmlld0NsYXNzKQoreworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OworICAgIGZvckVhY2hWaWV3SW5IaWVyYXJjaHkodmlldywgXihVSVZpZXcgKnN1YnZpZXcsIEJP
T0wgKnN0b3ApIHsKKyAgICAgICAgaWYgKFtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6dmlld0NsYXNz
XSkKKyAgICAgICAgICAgIFt2aWV3cyBhZGRPYmplY3Q6c3Vidmlld107CisgICAgfSk7CisgICAg
cmV0dXJuIHZpZXdzLmF1dG9yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqaW5saW5l
RGVzY3JpcHRpb24oTlNBcnJheSAqb2JqZWN0cykKK3sKKyAgICBOU011dGFibGVBcnJheSAqc3Ry
aW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpvYmplY3RzLmNvdW50XTsK
KyAgICBmb3IgKGlkIG9iamVjdCBpbiBvYmplY3RzKQorICAgICAgICBbc3RyaW5ncyBhZGRPYmpl
Y3Q6W29iamVjdCBkZXNjcmlwdGlvbl1dOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIlslQF0iLCBbc3RyaW5ncyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJd
XTsKK30KKwogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25h
cHNob3RJbWFnZSgpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMzQ1
LDYgKzM3OCwxNSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5k
b3dTbmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gcmVzdWx0OwogCiAjZWxzZQorICAgIE5TTG9n
KEAiPFdLPjogIik7CisgICAgTlNMb2coQCI8V0s+OiAqKiogVEFLSU5HIFNOQVBTSE9UIEZPUiAl
QCAqKioiLCBbW3BsYXRmb3JtVmlldygpIFVSTF0gcGF0aF0pOworICAgIGZvciAoVUlWaWV3ICp2
aWV3IGluIGZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKHBsYXRmb3JtVmlldygpLCBOU0Ns
YXNzRnJvbVN0cmluZyhAIlVJVGV4dFNlbGVjdGlvblZpZXciKSkpIHsKKyAgICAgICAgZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeSh2aWV3LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkgewor
ICAgICAgICAgICAgTlNMb2coQCI8V0s+OiBUaGUgYW5pbWF0aW9ucyBvbiAlQCBhcmU6ICVAIiwg
c3VidmlldywgaW5saW5lRGVzY3JpcHRpb24oc3Vidmlldy5sYXllci5hbmltYXRpb25LZXlzKSk7
CisgICAgICAgIH0pOworICAgIH0KKyAgICBOU0xvZyhAIjxXSz46ICIpOworCiAgICAgQ0dGbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDI7IC8vIEZJWE1FOiBoYXJkY29kZSAyeCBmb3Igbm93LiBJ
biBmdXR1cmUgd2UgY291bGQgcmVzcGVjdCAxeCBhbmQgM3ggYXMgd2UgZG8gb24gTWFjLgogICAg
IENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IsIDEpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL0NoYW5nZUxvZwppbmRleCBmMmVkYWVkNWNmYTNjN2I1MTEwZGQ0NTI3ZTA5NTQ5
NjQyNDc5ZjUxLi5iZGI4NmQwZDQ1ZmRhMmQxMWIxMDBjMWIyZmRhOTIxMTRlMGY2YTU2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5
LTEwLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1MgMTNdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLnN2
ZyBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjEyNDI5Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb2VzIHRoaXMgcmVwcm9kdWNl
IGluIEVXUz8/CisKIDIwMTgtMTEtMDYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVwZGF0ZSBhbGwgdGVzdHMgdG8gbWF0Y2gg
dGhlIGxhdGVzdCBBUEkgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjgu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTIuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcxLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgzLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDYuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMi1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQwLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQxLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUzLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjAuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ny1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjkuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3My5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4My1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ny5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTYu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDAuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDkuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEwLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjExLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE5LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIzLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI4LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0My5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1My1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ny5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzYtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTkuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNy1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0My5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDUuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDYtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcxLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzczLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Nzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc5LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg3LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg4LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkxLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzky
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTUuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTYtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjMuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Mjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Mzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQxLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1MS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYxLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYy
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Mi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgzLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ny5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MDAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIx
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjUtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjYuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjcuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIz
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ny5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjky
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDkt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMw
OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMx
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMy
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDAt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDIuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEzLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTYtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQy
MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ni1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUw
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDgtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUx
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUy
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Nzguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYw
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjExLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYx
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYy
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYz
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjczLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODAuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ny1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTAtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTUtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ni5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzExLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcx
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTczMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTczNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ny1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzczLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzktZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODItZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ni1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ny1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODExLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mjkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgz
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3MS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3My1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Ny5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Ni1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk4LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNy1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTky
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkz
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3My1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzMtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ny5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3OC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ2MWY3MGE1
MTQ4MDE2OTg3YzlkNjY1YTkwODUxNDBmYWZiMTdmNGIuLjIyMmNjZTc2NzI3ZjY3MmUwY2JkZmQ3
NGU4ZmNkNDM5NzY4NDczMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEzMzIsNyArMTMzMiw2IEBAIHdlYmtpdC5vcmcvYi8xOTkwNzEg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9jc3MvdXNlci1zZWxlY3Qtbm9uZS5odG1s
IFsKIAogd2Via2l0Lm9yZy9iLzE5MDg4MiBbIERlYnVnIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25l
LWFuaW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxl
YXNlIF0gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24uc3ZnIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxlYXNlIF0g
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zZWxlY3RTdWJTdHJpbmctMi5zdmcgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTk5MjEzIFsgUmVsZWFzZSBdIGltcG9y
dGVkL2JsaW5rL2VkaXRpbmcvc2VsZWN0aW9uL2RlbGV0ZUZyb21Eb2N1bWVudC1jcmFzaC5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381654</attachid>
            <date>2019-10-22 22:08:23 -0700</date>
            <delta_ts>2019-10-23 09:46:06 -0700</delta_ts>
            <desc>Attempt #4 (2)</desc>
            <filename>bug-203247-20191022220822.patch</filename>
            <type>text/plain</type>
            <size>4050675</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggZThiMjQzNjA1MTUxOGRhMzM4MWQyZjU3NTdmYTYxODZlNjg1M2E3ZC4uMjBiMTZkYWUyYWJl
YjZmZmM5YjIzODVjNGRhNjUwMGU1OTk3Zjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMTQyOCw2ICsxNDI4LDEwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZSgpCiAgICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorc3RhdGljX2Fzc2VydChmYWxzZSwgIkkganVzdCB3YW50IHJlc3VsdHMg
ZnJvbSBpT1MgYm90cywgc28gZmFpbCBlYXJseSBoZXJlIGZvciBub24taU9TLiIpOworI2VuZGlm
CisKIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewogICAgIGlm
ICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCks
IENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjdhYmZkZmIyNWIyZGY0OWEwNmRhMjUyYjc3
YzEyODRmZmIxMDU2OC4uOTdhZmMxOGJmYWU2YTk5ZGFiZTJjZmZhZTcyNDIwNTY2ZGEzMGMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC02ODYxLDYgKzY4NjEsMTQgQEAgLSAodm9pZClfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9u
CiAgICAgW19jb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9uXTsKIH0KIAor
LSAoZGlzcGF0Y2hfYmxvY2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5n
U3RhdGVGb3JUZXN0aW5nCit7CisgICAgW19jb250ZW50VmlldyBfc3RhcnRTdXBwcmVzc2luZ1Nl
bGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OlJlc2V0dGluZ1N0YXRlQmV0d2VlblRl
c3RzXTsKKyAgICByZXR1cm4gW1tbY29udGVudFZpZXcgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRW
aWV3PihfY29udGVudFZpZXcuZ2V0KCkpXSB7CisgICAgICAgIFtjb250ZW50VmlldyBfc3RvcFN1
cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6UmVzZXR0aW5nU3Rh
dGVCZXR3ZWVuVGVzdHNdOworICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOworfQorCiAtIChVSVZp
ZXcgKilfZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldwogewogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IGNlMTYwODJhNGNhZmEzNTRkNzM4N2Y5MjQyNGU2NDFkZmQwM2U0
ODAuLjgyNzZjNjI5NzBjMmJhMzc1ZWJiYTFhYmY0NjE2ZjYwNjhhNmFjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApA
QCAtNTgwLDQgKzU4MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0
RWRnZSkgewogLSAodm9pZClfcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3Rpbmc7
CiAtICh2b2lkKV9wcm9jZXNzRGlkUmVzdW1lRm9yVGVzdGluZzsKIAorLSAoZGlzcGF0Y2hfYmxv
Y2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5nU3RhdGVGb3JUZXN0aW5n
OworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMWE3ODRhNmViNzdlOTdlODdiODE4NGUxNzU1NjAz
NTc5MzE4NTRlYy4uY2Y0OWU1YzA0MTZhMjMxNzJhNDIxMzAzOThlZDY5ODFhYzNiNTBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBT
dXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEVkaXRhYmxl
Um9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IDEgPDwgMCwKICAgICBGb2N1c2VkRWxl
bWVudElzVG9vU21hbGwgPSAxIDw8IDEsCi0gICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmluZyA9IDEg
PDwgMgorICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIsCisgICAgUmVzZXR0aW5n
U3RhdGVCZXR3ZWVuVGVzdHMgPSAxIDw8IDMsCiB9OwogCiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyB7CkBAIC01NTgsNiArNTU5LDkgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIAog
LSAodm9pZClfZGlkQ2hhbmdlTGlua1ByZXZpZXdBdmFpbGFiaWxpdHk7CiAKKy0gKHZvaWQpX3N0
YXJ0U3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246KFdlYktpdDo6U3VwcHJl
c3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb24pcmVhc29uOworLSAodm9pZClfc3RvcFN1cHByZXNz
aW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOihXZWJLaXQ6OlN1cHByZXNzU2VsZWN0aW9u
QXNzaXN0YW50UmVhc29uKXJlYXNvbjsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY20ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc2NtLnB5CmluZGV4IGFhMWY3ZWE5ZmQ4YWM4YzI3ODgxNmQ5ZTNjMjgzYzVkM2Fm
YjUzNDMuLjYzYjdhYjhlYTcyNjhkYTdiNjgyMzJhNDVmOTA2MmE5ODhkNTQ5NjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQpAQCAt
NjgsMTQgKzY4LDE3IEBAIGNsYXNzIFNDTToKICAgICAjIEEgd3JhcHBlciB1c2VkIGJ5IHN1YmNs
YXNzZXMgdG8gY3JlYXRlIHByb2Nlc3Nlcy4KICAgICBkZWYgcnVuKHNlbGYsIGFyZ3MsIGN3ZD1O
b25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPU5vbmUsIGlnbm9yZV9lcnJvcnM9RmFsc2Us
IHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVybl9zdGRlcnI9VHJ1ZSwgZGVjb2RlX291dHB1
dD1UcnVlKToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHNldCBjd2QgYXBwcm9wcmlhdGVs
eS4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChhcmdzLAotICAg
ICAgICAgICAgY3dkPWN3ZCwKLSAgICAgICAgICAgIGlucHV0PWlucHV0LAotICAgICAgICAgICAg
ZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAotICAgICAgICAgICAgaWdub3JlX2Vycm9ycz1p
Z25vcmVfZXJyb3JzLAotICAgICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1yZXR1cm5fZXhpdF9j
b2RlLAotICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1yZXR1cm5fc3RkZXJyLAotICAgICAgICAg
ICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsCisgICAgICAgICAgICAg
ICAgY3dkPWN3ZCwKKyAgICAgICAgICAgICAgICBpbnB1dD1pbnB1dCwKKyAgICAgICAgICAgICAg
ICBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgaWdub3JlX2Vy
cm9ycz1pZ25vcmVfZXJyb3JzLAorICAgICAgICAgICAgICAgIHJldHVybl9leGl0X2NvZGU9cmV0
dXJuX2V4aXRfY29kZSwKKyAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPXJldHVybl9zdGRl
cnIsCisgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gIiIKIAogICAgICMg
U0NNIGFsd2F5cyByZXR1cm5zIHJlcG9zaXRvcnkgcmVsYXRpdmUgcGF0aCwgYnV0IHNvbWV0aW1l
cyB3ZSBuZWVkCiAgICAgIyBhYnNvbHV0ZSBwYXRocyB0byBwYXNzIHRvIHJtLCBldGMuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IGRk
ODY1YzBiODcyODI3YzYxZWVmYjk4MjVmMGUwMzgwMDM3YjAzZGUuLmRhYTI3NWY0YTRmOWM3ZTcw
MWQ0N2NkNDQ2N2UzZjhhZGFhYjQxNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CkBAIC02NCwxMCArNjQsMTAgQEAgY2xhc3MgQ2hlY2tT
dHlsZShBYnN0cmFjdFN0ZXApOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLmRlcHJlY2F0ZWRf
cG9ydCgpLmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCkgKyBhcmdzLCBjd2Q9c2VsZi5fdG9v
bC5zY20oKS5jaGVja291dF9yb290KQotICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHJlLXJh
aXNlIHRoZSBleGNlcHRpb24gaGVyZSB0byBoYXZlIHRoZQogICAgICAgICAgICAgICAgICMgc3R5
bGUtcXVldWUgZG8gdGhlIHJpZ2h0IHRoaW5nLgotICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAg
ICAgICAgICAgICAgICBwcmludCBlCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9vbC51c2Vy
LmNvbmZpcm0oIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT8iKToKICAgICAgICAg
ICAgICAgICBzZWxmLl9leGl0KDEpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKaW5kZXggNjgwZDJlMjQ2MTcxY2M2NmNjMzZiZmFiNGVlZDgzZDU3ZGJhYWU0OS4uYWU5ODQ1
NzA3OTU2YjA1YmExMjM0NjBmMjQ0ZDBlMjJkYjMzMWM1NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlICJJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjZW5kaWYKKwogT0JKQ19DTEFTUyBOU1N0cmluZzsK
IE9CSkNfQ0xBU1MgVUlLZXlib2FyZElucHV0TW9kZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbjsKQEAgLTU3OSw2ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHNNZWRpYUlj
b247CisgICAgQmxvY2tQdHI8dm9pZCgpPiBtX3dlYlZpZXdSZXNldEJsb2NrOwogI2VuZGlmCiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXJQcm94eT4gbV9ldmVudFNlbmRlclByb3h5
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
CmluZGV4IDY2MWYyOGViM2Y2Y2QyMWE5MWRmYTcwZTNlYWU3Mzk4YzZiMDk2OWEuLjJiMGI2MjMy
ZmU1ZTFlNDcyNjNmZDliZjY2MDhiNDgwODQ0NTNkZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTMxNSw2ICszMTUsMzkgQEAg
c3RhdGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogaW5mbywgY29uc3Qgdm9p
ZCosIHNpemVfdCkKIH0KICNlbmRpZgogCitzdGF0aWMgQk9PTCBmb3JFYWNoVmlld0luSGllcmFy
Y2h5KFVJVmlldyAqdmlldywgdm9pZChebWFwRnVuY3Rpb24pKFVJVmlldyAqc3VidmlldywgQk9P
TCAqc3RvcCkpCit7CisgICAgQk9PTCBzdG9wID0gTk87CisgICAgbWFwRnVuY3Rpb24odmlldywg
JnN0b3ApOworICAgIGlmIChzdG9wKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgZm9yIChV
SVZpZXcgKnN1YnZpZXcgaW4gdmlldy5zdWJ2aWV3cykgeworICAgICAgICBzdG9wID0gZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeShzdWJ2aWV3LCBtYXBGdW5jdGlvbik7CisgICAgICAgIGlmIChzdG9w
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBzdG9wOworfQorCitzdGF0
aWMgTlNBcnJheTxVSVZpZXcgKj4gKmZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKFVJVmll
dyAqdmlldywgQ2xhc3Mgdmlld0NsYXNzKQoreworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OworICAgIGZvckVhY2hWaWV3SW5IaWVyYXJjaHkodmlldywgXihVSVZpZXcgKnN1YnZpZXcsIEJP
T0wgKnN0b3ApIHsKKyAgICAgICAgaWYgKFtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6dmlld0NsYXNz
XSkKKyAgICAgICAgICAgIFt2aWV3cyBhZGRPYmplY3Q6c3Vidmlld107CisgICAgfSk7CisgICAg
cmV0dXJuIHZpZXdzLmF1dG9yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqaW5saW5l
RGVzY3JpcHRpb24oTlNBcnJheSAqb2JqZWN0cykKK3sKKyAgICBOU011dGFibGVBcnJheSAqc3Ry
aW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpvYmplY3RzLmNvdW50XTsK
KyAgICBmb3IgKGlkIG9iamVjdCBpbiBvYmplY3RzKQorICAgICAgICBbc3RyaW5ncyBhZGRPYmpl
Y3Q6W29iamVjdCBkZXNjcmlwdGlvbl1dOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIlslQF0iLCBbc3RyaW5ncyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJd
XTsKK30KKwogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25h
cHNob3RJbWFnZSgpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMzQ1
LDYgKzM3OCwxNSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5k
b3dTbmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gcmVzdWx0OwogCiAjZWxzZQorICAgIE5TTG9n
KEAiPFdLPjogIik7CisgICAgTlNMb2coQCI8V0s+OiAqKiogVEFLSU5HIFNOQVBTSE9UIEZPUiAl
QCAqKioiLCBbW3BsYXRmb3JtVmlldygpIFVSTF0gcGF0aF0pOworICAgIGZvciAoVUlWaWV3ICp2
aWV3IGluIGZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKHBsYXRmb3JtVmlldygpLCBOU0Ns
YXNzRnJvbVN0cmluZyhAIlVJVGV4dFNlbGVjdGlvblZpZXciKSkpIHsKKyAgICAgICAgZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeSh2aWV3LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkgewor
ICAgICAgICAgICAgTlNMb2coQCI8V0s+OiBUaGUgYW5pbWF0aW9ucyBvbiAlQCBhcmU6ICVAIiwg
c3VidmlldywgaW5saW5lRGVzY3JpcHRpb24oc3Vidmlldy5sYXllci5hbmltYXRpb25LZXlzKSk7
CisgICAgICAgIH0pOworICAgIH0KKyAgICBOU0xvZyhAIjxXSz46ICIpOworCiAgICAgQ0dGbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDI7IC8vIEZJWE1FOiBoYXJkY29kZSAyeCBmb3Igbm93LiBJ
biBmdXR1cmUgd2UgY291bGQgcmVzcGVjdCAxeCBhbmQgM3ggYXMgd2UgZG8gb24gTWFjLgogICAg
IENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IsIDEpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL0NoYW5nZUxvZwppbmRleCBmMmVkYWVkNWNmYTNjN2I1MTEwZGQ0NTI3ZTA5NTQ5
NjQyNDc5ZjUxLi5iZGI4NmQwZDQ1ZmRhMmQxMWIxMDBjMWIyZmRhOTIxMTRlMGY2YTU2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5
LTEwLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1MgMTNdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLnN2
ZyBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjEyNDI5Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb2VzIHRoaXMgcmVwcm9kdWNl
IGluIEVXUz8/CisKIDIwMTgtMTEtMDYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVwZGF0ZSBhbGwgdGVzdHMgdG8gbWF0Y2gg
dGhlIGxhdGVzdCBBUEkgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjgu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTIuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcxLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgzLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDYuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMi1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQwLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQxLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUzLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjAuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ny1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjkuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3My5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4My1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ny5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTYu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDAuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDkuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEwLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjExLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE5LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIzLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI4LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0My5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1My1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ny5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzYtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTkuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNy1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0My5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDUuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDYtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcxLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzczLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Nzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc5LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg3LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg4LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkxLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzky
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTUuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTYtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjMuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Mjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Mzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQxLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1MS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYxLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYy
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Mi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgzLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ny5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MDAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIx
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjUtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjYuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjcuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIz
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ny5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjky
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDkt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMw
OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMx
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMy
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDAt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDIuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEzLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTYtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQy
MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ni1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUw
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDgtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUx
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUy
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Nzguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYw
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjExLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYx
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYy
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYz
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjczLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODAuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ny1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTAtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTUtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ni5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzExLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcx
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTczMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTczNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ny1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzczLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzktZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODItZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ni1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ny1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODExLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mjkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgz
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3MS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3My1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Ny5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Ni1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk4LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNy1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTky
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkz
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3My1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzMtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ny5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3OC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ2MWY3MGE1
MTQ4MDE2OTg3YzlkNjY1YTkwODUxNDBmYWZiMTdmNGIuLjIyMmNjZTc2NzI3ZjY3MmUwY2JkZmQ3
NGU4ZmNkNDM5NzY4NDczMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEzMzIsNyArMTMzMiw2IEBAIHdlYmtpdC5vcmcvYi8xOTkwNzEg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9jc3MvdXNlci1zZWxlY3Qtbm9uZS5odG1s
IFsKIAogd2Via2l0Lm9yZy9iLzE5MDg4MiBbIERlYnVnIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25l
LWFuaW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxl
YXNlIF0gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24uc3ZnIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxlYXNlIF0g
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zZWxlY3RTdWJTdHJpbmctMi5zdmcgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTk5MjEzIFsgUmVsZWFzZSBdIGltcG9y
dGVkL2JsaW5rL2VkaXRpbmcvc2VsZWN0aW9uL2RlbGV0ZUZyb21Eb2N1bWVudC1jcmFzaC5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381655</attachid>
            <date>2019-10-22 22:09:08 -0700</date>
            <delta_ts>2019-10-23 09:46:12 -0700</delta_ts>
            <desc>Attempt #4 (3)</desc>
            <filename>bug-203247-20191022220906.patch</filename>
            <type>text/plain</type>
            <size>4050675</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggZThiMjQzNjA1MTUxOGRhMzM4MWQyZjU3NTdmYTYxODZlNjg1M2E3ZC4uMjBiMTZkYWUyYWJl
YjZmZmM5YjIzODVjNGRhNjUwMGU1OTk3Zjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMTQyOCw2ICsxNDI4LDEwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZSgpCiAgICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorc3RhdGljX2Fzc2VydChmYWxzZSwgIkkganVzdCB3YW50IHJlc3VsdHMg
ZnJvbSBpT1MgYm90cywgc28gZmFpbCBlYXJseSBoZXJlIGZvciBub24taU9TLiIpOworI2VuZGlm
CisKIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewogICAgIGlm
ICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCks
IENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjdhYmZkZmIyNWIyZGY0OWEwNmRhMjUyYjc3
YzEyODRmZmIxMDU2OC4uOTdhZmMxOGJmYWU2YTk5ZGFiZTJjZmZhZTcyNDIwNTY2ZGEzMGMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC02ODYxLDYgKzY4NjEsMTQgQEAgLSAodm9pZClfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9u
CiAgICAgW19jb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9uXTsKIH0KIAor
LSAoZGlzcGF0Y2hfYmxvY2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5n
U3RhdGVGb3JUZXN0aW5nCit7CisgICAgW19jb250ZW50VmlldyBfc3RhcnRTdXBwcmVzc2luZ1Nl
bGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OlJlc2V0dGluZ1N0YXRlQmV0d2VlblRl
c3RzXTsKKyAgICByZXR1cm4gW1tbY29udGVudFZpZXcgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRW
aWV3PihfY29udGVudFZpZXcuZ2V0KCkpXSB7CisgICAgICAgIFtjb250ZW50VmlldyBfc3RvcFN1
cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6UmVzZXR0aW5nU3Rh
dGVCZXR3ZWVuVGVzdHNdOworICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOworfQorCiAtIChVSVZp
ZXcgKilfZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldwogewogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IGNlMTYwODJhNGNhZmEzNTRkNzM4N2Y5MjQyNGU2NDFkZmQwM2U0
ODAuLjgyNzZjNjI5NzBjMmJhMzc1ZWJiYTFhYmY0NjE2ZjYwNjhhNmFjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApA
QCAtNTgwLDQgKzU4MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0
RWRnZSkgewogLSAodm9pZClfcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3Rpbmc7
CiAtICh2b2lkKV9wcm9jZXNzRGlkUmVzdW1lRm9yVGVzdGluZzsKIAorLSAoZGlzcGF0Y2hfYmxv
Y2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5nU3RhdGVGb3JUZXN0aW5n
OworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMWE3ODRhNmViNzdlOTdlODdiODE4NGUxNzU1NjAz
NTc5MzE4NTRlYy4uY2Y0OWU1YzA0MTZhMjMxNzJhNDIxMzAzOThlZDY5ODFhYzNiNTBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBT
dXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEVkaXRhYmxl
Um9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IDEgPDwgMCwKICAgICBGb2N1c2VkRWxl
bWVudElzVG9vU21hbGwgPSAxIDw8IDEsCi0gICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmluZyA9IDEg
PDwgMgorICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIsCisgICAgUmVzZXR0aW5n
U3RhdGVCZXR3ZWVuVGVzdHMgPSAxIDw8IDMsCiB9OwogCiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyB7CkBAIC01NTgsNiArNTU5LDkgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIAog
LSAodm9pZClfZGlkQ2hhbmdlTGlua1ByZXZpZXdBdmFpbGFiaWxpdHk7CiAKKy0gKHZvaWQpX3N0
YXJ0U3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246KFdlYktpdDo6U3VwcHJl
c3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb24pcmVhc29uOworLSAodm9pZClfc3RvcFN1cHByZXNz
aW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOihXZWJLaXQ6OlN1cHByZXNzU2VsZWN0aW9u
QXNzaXN0YW50UmVhc29uKXJlYXNvbjsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY20ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc2NtLnB5CmluZGV4IGFhMWY3ZWE5ZmQ4YWM4YzI3ODgxNmQ5ZTNjMjgzYzVkM2Fm
YjUzNDMuLjYzYjdhYjhlYTcyNjhkYTdiNjgyMzJhNDVmOTA2MmE5ODhkNTQ5NjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQpAQCAt
NjgsMTQgKzY4LDE3IEBAIGNsYXNzIFNDTToKICAgICAjIEEgd3JhcHBlciB1c2VkIGJ5IHN1YmNs
YXNzZXMgdG8gY3JlYXRlIHByb2Nlc3Nlcy4KICAgICBkZWYgcnVuKHNlbGYsIGFyZ3MsIGN3ZD1O
b25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPU5vbmUsIGlnbm9yZV9lcnJvcnM9RmFsc2Us
IHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVybl9zdGRlcnI9VHJ1ZSwgZGVjb2RlX291dHB1
dD1UcnVlKToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHNldCBjd2QgYXBwcm9wcmlhdGVs
eS4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChhcmdzLAotICAg
ICAgICAgICAgY3dkPWN3ZCwKLSAgICAgICAgICAgIGlucHV0PWlucHV0LAotICAgICAgICAgICAg
ZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAotICAgICAgICAgICAgaWdub3JlX2Vycm9ycz1p
Z25vcmVfZXJyb3JzLAotICAgICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1yZXR1cm5fZXhpdF9j
b2RlLAotICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1yZXR1cm5fc3RkZXJyLAotICAgICAgICAg
ICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsCisgICAgICAgICAgICAg
ICAgY3dkPWN3ZCwKKyAgICAgICAgICAgICAgICBpbnB1dD1pbnB1dCwKKyAgICAgICAgICAgICAg
ICBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgaWdub3JlX2Vy
cm9ycz1pZ25vcmVfZXJyb3JzLAorICAgICAgICAgICAgICAgIHJldHVybl9leGl0X2NvZGU9cmV0
dXJuX2V4aXRfY29kZSwKKyAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPXJldHVybl9zdGRl
cnIsCisgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gIiIKIAogICAgICMg
U0NNIGFsd2F5cyByZXR1cm5zIHJlcG9zaXRvcnkgcmVsYXRpdmUgcGF0aCwgYnV0IHNvbWV0aW1l
cyB3ZSBuZWVkCiAgICAgIyBhYnNvbHV0ZSBwYXRocyB0byBwYXNzIHRvIHJtLCBldGMuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IGRk
ODY1YzBiODcyODI3YzYxZWVmYjk4MjVmMGUwMzgwMDM3YjAzZGUuLmRhYTI3NWY0YTRmOWM3ZTcw
MWQ0N2NkNDQ2N2UzZjhhZGFhYjQxNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CkBAIC02NCwxMCArNjQsMTAgQEAgY2xhc3MgQ2hlY2tT
dHlsZShBYnN0cmFjdFN0ZXApOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLmRlcHJlY2F0ZWRf
cG9ydCgpLmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCkgKyBhcmdzLCBjd2Q9c2VsZi5fdG9v
bC5zY20oKS5jaGVja291dF9yb290KQotICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHJlLXJh
aXNlIHRoZSBleGNlcHRpb24gaGVyZSB0byBoYXZlIHRoZQogICAgICAgICAgICAgICAgICMgc3R5
bGUtcXVldWUgZG8gdGhlIHJpZ2h0IHRoaW5nLgotICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAg
ICAgICAgICAgICAgICBwcmludCBlCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9vbC51c2Vy
LmNvbmZpcm0oIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT8iKToKICAgICAgICAg
ICAgICAgICBzZWxmLl9leGl0KDEpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKaW5kZXggNjgwZDJlMjQ2MTcxY2M2NmNjMzZiZmFiNGVlZDgzZDU3ZGJhYWU0OS4uYWU5ODQ1
NzA3OTU2YjA1YmExMjM0NjBmMjQ0ZDBlMjJkYjMzMWM1NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlICJJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjZW5kaWYKKwogT0JKQ19DTEFTUyBOU1N0cmluZzsK
IE9CSkNfQ0xBU1MgVUlLZXlib2FyZElucHV0TW9kZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbjsKQEAgLTU3OSw2ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHNNZWRpYUlj
b247CisgICAgQmxvY2tQdHI8dm9pZCgpPiBtX3dlYlZpZXdSZXNldEJsb2NrOwogI2VuZGlmCiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXJQcm94eT4gbV9ldmVudFNlbmRlclByb3h5
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
CmluZGV4IDY2MWYyOGViM2Y2Y2QyMWE5MWRmYTcwZTNlYWU3Mzk4YzZiMDk2OWEuLjJiMGI2MjMy
ZmU1ZTFlNDcyNjNmZDliZjY2MDhiNDgwODQ0NTNkZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTMxNSw2ICszMTUsMzkgQEAg
c3RhdGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogaW5mbywgY29uc3Qgdm9p
ZCosIHNpemVfdCkKIH0KICNlbmRpZgogCitzdGF0aWMgQk9PTCBmb3JFYWNoVmlld0luSGllcmFy
Y2h5KFVJVmlldyAqdmlldywgdm9pZChebWFwRnVuY3Rpb24pKFVJVmlldyAqc3VidmlldywgQk9P
TCAqc3RvcCkpCit7CisgICAgQk9PTCBzdG9wID0gTk87CisgICAgbWFwRnVuY3Rpb24odmlldywg
JnN0b3ApOworICAgIGlmIChzdG9wKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgZm9yIChV
SVZpZXcgKnN1YnZpZXcgaW4gdmlldy5zdWJ2aWV3cykgeworICAgICAgICBzdG9wID0gZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeShzdWJ2aWV3LCBtYXBGdW5jdGlvbik7CisgICAgICAgIGlmIChzdG9w
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBzdG9wOworfQorCitzdGF0
aWMgTlNBcnJheTxVSVZpZXcgKj4gKmZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKFVJVmll
dyAqdmlldywgQ2xhc3Mgdmlld0NsYXNzKQoreworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OworICAgIGZvckVhY2hWaWV3SW5IaWVyYXJjaHkodmlldywgXihVSVZpZXcgKnN1YnZpZXcsIEJP
T0wgKnN0b3ApIHsKKyAgICAgICAgaWYgKFtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6dmlld0NsYXNz
XSkKKyAgICAgICAgICAgIFt2aWV3cyBhZGRPYmplY3Q6c3Vidmlld107CisgICAgfSk7CisgICAg
cmV0dXJuIHZpZXdzLmF1dG9yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqaW5saW5l
RGVzY3JpcHRpb24oTlNBcnJheSAqb2JqZWN0cykKK3sKKyAgICBOU011dGFibGVBcnJheSAqc3Ry
aW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpvYmplY3RzLmNvdW50XTsK
KyAgICBmb3IgKGlkIG9iamVjdCBpbiBvYmplY3RzKQorICAgICAgICBbc3RyaW5ncyBhZGRPYmpl
Y3Q6W29iamVjdCBkZXNjcmlwdGlvbl1dOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIlslQF0iLCBbc3RyaW5ncyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJd
XTsKK30KKwogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25h
cHNob3RJbWFnZSgpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMzQ1
LDYgKzM3OCwxNSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5k
b3dTbmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gcmVzdWx0OwogCiAjZWxzZQorICAgIE5TTG9n
KEAiPFdLPjogIik7CisgICAgTlNMb2coQCI8V0s+OiAqKiogVEFLSU5HIFNOQVBTSE9UIEZPUiAl
QCAqKioiLCBbW3BsYXRmb3JtVmlldygpIFVSTF0gcGF0aF0pOworICAgIGZvciAoVUlWaWV3ICp2
aWV3IGluIGZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKHBsYXRmb3JtVmlldygpLCBOU0Ns
YXNzRnJvbVN0cmluZyhAIlVJVGV4dFNlbGVjdGlvblZpZXciKSkpIHsKKyAgICAgICAgZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeSh2aWV3LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkgewor
ICAgICAgICAgICAgTlNMb2coQCI8V0s+OiBUaGUgYW5pbWF0aW9ucyBvbiAlQCBhcmU6ICVAIiwg
c3VidmlldywgaW5saW5lRGVzY3JpcHRpb24oc3Vidmlldy5sYXllci5hbmltYXRpb25LZXlzKSk7
CisgICAgICAgIH0pOworICAgIH0KKyAgICBOU0xvZyhAIjxXSz46ICIpOworCiAgICAgQ0dGbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDI7IC8vIEZJWE1FOiBoYXJkY29kZSAyeCBmb3Igbm93LiBJ
biBmdXR1cmUgd2UgY291bGQgcmVzcGVjdCAxeCBhbmQgM3ggYXMgd2UgZG8gb24gTWFjLgogICAg
IENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IsIDEpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL0NoYW5nZUxvZwppbmRleCBmMmVkYWVkNWNmYTNjN2I1MTEwZGQ0NTI3ZTA5NTQ5
NjQyNDc5ZjUxLi5iZGI4NmQwZDQ1ZmRhMmQxMWIxMDBjMWIyZmRhOTIxMTRlMGY2YTU2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5
LTEwLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1MgMTNdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLnN2
ZyBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjEyNDI5Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb2VzIHRoaXMgcmVwcm9kdWNl
IGluIEVXUz8/CisKIDIwMTgtMTEtMDYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVwZGF0ZSBhbGwgdGVzdHMgdG8gbWF0Y2gg
dGhlIGxhdGVzdCBBUEkgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjgu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTIuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcxLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgzLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDYuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMi1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQwLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQxLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUzLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjAuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ny1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjkuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3My5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4My1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ny5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTYu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDAuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDkuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEwLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjExLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE5LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIzLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI4LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0My5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1My1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ny5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzYtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTkuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNy1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0My5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDUuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDYtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcxLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzczLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Nzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc5LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg3LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg4LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkxLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzky
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTUuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTYtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjMuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Mjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Mzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQxLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1MS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYxLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYy
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Mi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgzLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ny5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MDAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIx
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjUtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjYuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjcuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIz
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ny5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjky
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDkt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMw
OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMx
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMy
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDAt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDIuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEzLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTYtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQy
MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ni1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUw
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDgtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUx
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUy
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Nzguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYw
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjExLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYx
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYy
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYz
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjczLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODAuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ny1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTAtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTUtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ni5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzExLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcx
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTczMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTczNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ny1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzczLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzktZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODItZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ni1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ny1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODExLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mjkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgz
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3MS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3My1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Ny5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Ni1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk4LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNy1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTky
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkz
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3My1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzMtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ny5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3OC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ2MWY3MGE1
MTQ4MDE2OTg3YzlkNjY1YTkwODUxNDBmYWZiMTdmNGIuLjIyMmNjZTc2NzI3ZjY3MmUwY2JkZmQ3
NGU4ZmNkNDM5NzY4NDczMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEzMzIsNyArMTMzMiw2IEBAIHdlYmtpdC5vcmcvYi8xOTkwNzEg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9jc3MvdXNlci1zZWxlY3Qtbm9uZS5odG1s
IFsKIAogd2Via2l0Lm9yZy9iLzE5MDg4MiBbIERlYnVnIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25l
LWFuaW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxl
YXNlIF0gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24uc3ZnIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxlYXNlIF0g
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zZWxlY3RTdWJTdHJpbmctMi5zdmcgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTk5MjEzIFsgUmVsZWFzZSBdIGltcG9y
dGVkL2JsaW5rL2VkaXRpbmcvc2VsZWN0aW9uL2RlbGV0ZUZyb21Eb2N1bWVudC1jcmFzaC5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381656</attachid>
            <date>2019-10-22 22:09:57 -0700</date>
            <delta_ts>2019-10-23 09:46:19 -0700</delta_ts>
            <desc>Attempt #4 (4)</desc>
            <filename>bug-203247-20191022220955.patch</filename>
            <type>text/plain</type>
            <size>4050675</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggZThiMjQzNjA1MTUxOGRhMzM4MWQyZjU3NTdmYTYxODZlNjg1M2E3ZC4uMjBiMTZkYWUyYWJl
YjZmZmM5YjIzODVjNGRhNjUwMGU1OTk3Zjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMTQyOCw2ICsxNDI4LDEwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZSgpCiAgICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorc3RhdGljX2Fzc2VydChmYWxzZSwgIkkganVzdCB3YW50IHJlc3VsdHMg
ZnJvbSBpT1MgYm90cywgc28gZmFpbCBlYXJseSBoZXJlIGZvciBub24taU9TLiIpOworI2VuZGlm
CisKIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewogICAgIGlm
ICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCks
IENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjdhYmZkZmIyNWIyZGY0OWEwNmRhMjUyYjc3
YzEyODRmZmIxMDU2OC4uOTdhZmMxOGJmYWU2YTk5ZGFiZTJjZmZhZTcyNDIwNTY2ZGEzMGMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC02ODYxLDYgKzY4NjEsMTQgQEAgLSAodm9pZClfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9u
CiAgICAgW19jb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9uXTsKIH0KIAor
LSAoZGlzcGF0Y2hfYmxvY2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5n
U3RhdGVGb3JUZXN0aW5nCit7CisgICAgW19jb250ZW50VmlldyBfc3RhcnRTdXBwcmVzc2luZ1Nl
bGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OlJlc2V0dGluZ1N0YXRlQmV0d2VlblRl
c3RzXTsKKyAgICByZXR1cm4gW1tbY29udGVudFZpZXcgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRW
aWV3PihfY29udGVudFZpZXcuZ2V0KCkpXSB7CisgICAgICAgIFtjb250ZW50VmlldyBfc3RvcFN1
cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6UmVzZXR0aW5nU3Rh
dGVCZXR3ZWVuVGVzdHNdOworICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOworfQorCiAtIChVSVZp
ZXcgKilfZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldwogewogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IGNlMTYwODJhNGNhZmEzNTRkNzM4N2Y5MjQyNGU2NDFkZmQwM2U0
ODAuLjgyNzZjNjI5NzBjMmJhMzc1ZWJiYTFhYmY0NjE2ZjYwNjhhNmFjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApA
QCAtNTgwLDQgKzU4MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0
RWRnZSkgewogLSAodm9pZClfcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3Rpbmc7
CiAtICh2b2lkKV9wcm9jZXNzRGlkUmVzdW1lRm9yVGVzdGluZzsKIAorLSAoZGlzcGF0Y2hfYmxv
Y2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5nU3RhdGVGb3JUZXN0aW5n
OworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMWE3ODRhNmViNzdlOTdlODdiODE4NGUxNzU1NjAz
NTc5MzE4NTRlYy4uY2Y0OWU1YzA0MTZhMjMxNzJhNDIxMzAzOThlZDY5ODFhYzNiNTBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBT
dXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEVkaXRhYmxl
Um9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IDEgPDwgMCwKICAgICBGb2N1c2VkRWxl
bWVudElzVG9vU21hbGwgPSAxIDw8IDEsCi0gICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmluZyA9IDEg
PDwgMgorICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIsCisgICAgUmVzZXR0aW5n
U3RhdGVCZXR3ZWVuVGVzdHMgPSAxIDw8IDMsCiB9OwogCiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyB7CkBAIC01NTgsNiArNTU5LDkgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIAog
LSAodm9pZClfZGlkQ2hhbmdlTGlua1ByZXZpZXdBdmFpbGFiaWxpdHk7CiAKKy0gKHZvaWQpX3N0
YXJ0U3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246KFdlYktpdDo6U3VwcHJl
c3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb24pcmVhc29uOworLSAodm9pZClfc3RvcFN1cHByZXNz
aW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOihXZWJLaXQ6OlN1cHByZXNzU2VsZWN0aW9u
QXNzaXN0YW50UmVhc29uKXJlYXNvbjsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY20ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc2NtLnB5CmluZGV4IGFhMWY3ZWE5ZmQ4YWM4YzI3ODgxNmQ5ZTNjMjgzYzVkM2Fm
YjUzNDMuLjYzYjdhYjhlYTcyNjhkYTdiNjgyMzJhNDVmOTA2MmE5ODhkNTQ5NjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQpAQCAt
NjgsMTQgKzY4LDE3IEBAIGNsYXNzIFNDTToKICAgICAjIEEgd3JhcHBlciB1c2VkIGJ5IHN1YmNs
YXNzZXMgdG8gY3JlYXRlIHByb2Nlc3Nlcy4KICAgICBkZWYgcnVuKHNlbGYsIGFyZ3MsIGN3ZD1O
b25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPU5vbmUsIGlnbm9yZV9lcnJvcnM9RmFsc2Us
IHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVybl9zdGRlcnI9VHJ1ZSwgZGVjb2RlX291dHB1
dD1UcnVlKToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHNldCBjd2QgYXBwcm9wcmlhdGVs
eS4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChhcmdzLAotICAg
ICAgICAgICAgY3dkPWN3ZCwKLSAgICAgICAgICAgIGlucHV0PWlucHV0LAotICAgICAgICAgICAg
ZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAotICAgICAgICAgICAgaWdub3JlX2Vycm9ycz1p
Z25vcmVfZXJyb3JzLAotICAgICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1yZXR1cm5fZXhpdF9j
b2RlLAotICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1yZXR1cm5fc3RkZXJyLAotICAgICAgICAg
ICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsCisgICAgICAgICAgICAg
ICAgY3dkPWN3ZCwKKyAgICAgICAgICAgICAgICBpbnB1dD1pbnB1dCwKKyAgICAgICAgICAgICAg
ICBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgaWdub3JlX2Vy
cm9ycz1pZ25vcmVfZXJyb3JzLAorICAgICAgICAgICAgICAgIHJldHVybl9leGl0X2NvZGU9cmV0
dXJuX2V4aXRfY29kZSwKKyAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPXJldHVybl9zdGRl
cnIsCisgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gIiIKIAogICAgICMg
U0NNIGFsd2F5cyByZXR1cm5zIHJlcG9zaXRvcnkgcmVsYXRpdmUgcGF0aCwgYnV0IHNvbWV0aW1l
cyB3ZSBuZWVkCiAgICAgIyBhYnNvbHV0ZSBwYXRocyB0byBwYXNzIHRvIHJtLCBldGMuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IGRk
ODY1YzBiODcyODI3YzYxZWVmYjk4MjVmMGUwMzgwMDM3YjAzZGUuLmRhYTI3NWY0YTRmOWM3ZTcw
MWQ0N2NkNDQ2N2UzZjhhZGFhYjQxNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CkBAIC02NCwxMCArNjQsMTAgQEAgY2xhc3MgQ2hlY2tT
dHlsZShBYnN0cmFjdFN0ZXApOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLmRlcHJlY2F0ZWRf
cG9ydCgpLmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCkgKyBhcmdzLCBjd2Q9c2VsZi5fdG9v
bC5zY20oKS5jaGVja291dF9yb290KQotICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHJlLXJh
aXNlIHRoZSBleGNlcHRpb24gaGVyZSB0byBoYXZlIHRoZQogICAgICAgICAgICAgICAgICMgc3R5
bGUtcXVldWUgZG8gdGhlIHJpZ2h0IHRoaW5nLgotICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAg
ICAgICAgICAgICAgICBwcmludCBlCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9vbC51c2Vy
LmNvbmZpcm0oIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT8iKToKICAgICAgICAg
ICAgICAgICBzZWxmLl9leGl0KDEpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKaW5kZXggNjgwZDJlMjQ2MTcxY2M2NmNjMzZiZmFiNGVlZDgzZDU3ZGJhYWU0OS4uYWU5ODQ1
NzA3OTU2YjA1YmExMjM0NjBmMjQ0ZDBlMjJkYjMzMWM1NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlICJJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjZW5kaWYKKwogT0JKQ19DTEFTUyBOU1N0cmluZzsK
IE9CSkNfQ0xBU1MgVUlLZXlib2FyZElucHV0TW9kZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbjsKQEAgLTU3OSw2ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHNNZWRpYUlj
b247CisgICAgQmxvY2tQdHI8dm9pZCgpPiBtX3dlYlZpZXdSZXNldEJsb2NrOwogI2VuZGlmCiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXJQcm94eT4gbV9ldmVudFNlbmRlclByb3h5
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
CmluZGV4IDY2MWYyOGViM2Y2Y2QyMWE5MWRmYTcwZTNlYWU3Mzk4YzZiMDk2OWEuLjJiMGI2MjMy
ZmU1ZTFlNDcyNjNmZDliZjY2MDhiNDgwODQ0NTNkZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTMxNSw2ICszMTUsMzkgQEAg
c3RhdGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogaW5mbywgY29uc3Qgdm9p
ZCosIHNpemVfdCkKIH0KICNlbmRpZgogCitzdGF0aWMgQk9PTCBmb3JFYWNoVmlld0luSGllcmFy
Y2h5KFVJVmlldyAqdmlldywgdm9pZChebWFwRnVuY3Rpb24pKFVJVmlldyAqc3VidmlldywgQk9P
TCAqc3RvcCkpCit7CisgICAgQk9PTCBzdG9wID0gTk87CisgICAgbWFwRnVuY3Rpb24odmlldywg
JnN0b3ApOworICAgIGlmIChzdG9wKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgZm9yIChV
SVZpZXcgKnN1YnZpZXcgaW4gdmlldy5zdWJ2aWV3cykgeworICAgICAgICBzdG9wID0gZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeShzdWJ2aWV3LCBtYXBGdW5jdGlvbik7CisgICAgICAgIGlmIChzdG9w
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBzdG9wOworfQorCitzdGF0
aWMgTlNBcnJheTxVSVZpZXcgKj4gKmZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKFVJVmll
dyAqdmlldywgQ2xhc3Mgdmlld0NsYXNzKQoreworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OworICAgIGZvckVhY2hWaWV3SW5IaWVyYXJjaHkodmlldywgXihVSVZpZXcgKnN1YnZpZXcsIEJP
T0wgKnN0b3ApIHsKKyAgICAgICAgaWYgKFtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6dmlld0NsYXNz
XSkKKyAgICAgICAgICAgIFt2aWV3cyBhZGRPYmplY3Q6c3Vidmlld107CisgICAgfSk7CisgICAg
cmV0dXJuIHZpZXdzLmF1dG9yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqaW5saW5l
RGVzY3JpcHRpb24oTlNBcnJheSAqb2JqZWN0cykKK3sKKyAgICBOU011dGFibGVBcnJheSAqc3Ry
aW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpvYmplY3RzLmNvdW50XTsK
KyAgICBmb3IgKGlkIG9iamVjdCBpbiBvYmplY3RzKQorICAgICAgICBbc3RyaW5ncyBhZGRPYmpl
Y3Q6W29iamVjdCBkZXNjcmlwdGlvbl1dOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIlslQF0iLCBbc3RyaW5ncyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJd
XTsKK30KKwogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25h
cHNob3RJbWFnZSgpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMzQ1
LDYgKzM3OCwxNSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5k
b3dTbmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gcmVzdWx0OwogCiAjZWxzZQorICAgIE5TTG9n
KEAiPFdLPjogIik7CisgICAgTlNMb2coQCI8V0s+OiAqKiogVEFLSU5HIFNOQVBTSE9UIEZPUiAl
QCAqKioiLCBbW3BsYXRmb3JtVmlldygpIFVSTF0gcGF0aF0pOworICAgIGZvciAoVUlWaWV3ICp2
aWV3IGluIGZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKHBsYXRmb3JtVmlldygpLCBOU0Ns
YXNzRnJvbVN0cmluZyhAIlVJVGV4dFNlbGVjdGlvblZpZXciKSkpIHsKKyAgICAgICAgZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeSh2aWV3LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkgewor
ICAgICAgICAgICAgTlNMb2coQCI8V0s+OiBUaGUgYW5pbWF0aW9ucyBvbiAlQCBhcmU6ICVAIiwg
c3VidmlldywgaW5saW5lRGVzY3JpcHRpb24oc3Vidmlldy5sYXllci5hbmltYXRpb25LZXlzKSk7
CisgICAgICAgIH0pOworICAgIH0KKyAgICBOU0xvZyhAIjxXSz46ICIpOworCiAgICAgQ0dGbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDI7IC8vIEZJWE1FOiBoYXJkY29kZSAyeCBmb3Igbm93LiBJ
biBmdXR1cmUgd2UgY291bGQgcmVzcGVjdCAxeCBhbmQgM3ggYXMgd2UgZG8gb24gTWFjLgogICAg
IENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IsIDEpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL0NoYW5nZUxvZwppbmRleCBmMmVkYWVkNWNmYTNjN2I1MTEwZGQ0NTI3ZTA5NTQ5
NjQyNDc5ZjUxLi5iZGI4NmQwZDQ1ZmRhMmQxMWIxMDBjMWIyZmRhOTIxMTRlMGY2YTU2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5
LTEwLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1MgMTNdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLnN2
ZyBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjEyNDI5Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb2VzIHRoaXMgcmVwcm9kdWNl
IGluIEVXUz8/CisKIDIwMTgtMTEtMDYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVwZGF0ZSBhbGwgdGVzdHMgdG8gbWF0Y2gg
dGhlIGxhdGVzdCBBUEkgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjgu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTIuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcxLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgzLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDYuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMi1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQwLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQxLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUzLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjAuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ny1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjkuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3My5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4My1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ny5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTYu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDAuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDkuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEwLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjExLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE5LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIzLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI4LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0My5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1My1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ny5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzYtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTkuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNy1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0My5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDUuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDYtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcxLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzczLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Nzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc5LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg3LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg4LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkxLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzky
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTUuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTYtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjMuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Mjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Mzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQxLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1MS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYxLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYy
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Mi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgzLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ny5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MDAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIx
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjUtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjYuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjcuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIz
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ny5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjky
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDkt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMw
OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMx
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMy
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDAt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDIuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEzLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTYtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQy
MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ni1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUw
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDgtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUx
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUy
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Nzguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYw
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjExLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYx
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYy
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYz
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjczLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODAuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ny1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTAtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTUtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ni5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzExLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcx
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTczMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTczNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ny1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzczLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzktZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODItZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ni1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ny1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODExLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mjkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgz
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3MS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3My1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Ny5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Ni1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk4LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNy1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTky
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkz
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3My1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzMtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ny5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3OC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ2MWY3MGE1
MTQ4MDE2OTg3YzlkNjY1YTkwODUxNDBmYWZiMTdmNGIuLjIyMmNjZTc2NzI3ZjY3MmUwY2JkZmQ3
NGU4ZmNkNDM5NzY4NDczMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEzMzIsNyArMTMzMiw2IEBAIHdlYmtpdC5vcmcvYi8xOTkwNzEg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9jc3MvdXNlci1zZWxlY3Qtbm9uZS5odG1s
IFsKIAogd2Via2l0Lm9yZy9iLzE5MDg4MiBbIERlYnVnIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25l
LWFuaW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxl
YXNlIF0gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24uc3ZnIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxlYXNlIF0g
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zZWxlY3RTdWJTdHJpbmctMi5zdmcgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTk5MjEzIFsgUmVsZWFzZSBdIGltcG9y
dGVkL2JsaW5rL2VkaXRpbmcvc2VsZWN0aW9uL2RlbGV0ZUZyb21Eb2N1bWVudC1jcmFzaC5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381657</attachid>
            <date>2019-10-22 22:11:01 -0700</date>
            <delta_ts>2019-10-23 09:46:25 -0700</delta_ts>
            <desc>Attempt #4 (5)</desc>
            <filename>bug-203247-20191022221100.patch</filename>
            <type>text/plain</type>
            <size>4050675</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggZThiMjQzNjA1MTUxOGRhMzM4MWQyZjU3NTdmYTYxODZlNjg1M2E3ZC4uMjBiMTZkYWUyYWJl
YjZmZmM5YjIzODVjNGRhNjUwMGU1OTk3Zjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMTQyOCw2ICsxNDI4LDEwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZSgpCiAgICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorc3RhdGljX2Fzc2VydChmYWxzZSwgIkkganVzdCB3YW50IHJlc3VsdHMg
ZnJvbSBpT1MgYm90cywgc28gZmFpbCBlYXJseSBoZXJlIGZvciBub24taU9TLiIpOworI2VuZGlm
CisKIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewogICAgIGlm
ICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCks
IENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjdhYmZkZmIyNWIyZGY0OWEwNmRhMjUyYjc3
YzEyODRmZmIxMDU2OC4uOTdhZmMxOGJmYWU2YTk5ZGFiZTJjZmZhZTcyNDIwNTY2ZGEzMGMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC02ODYxLDYgKzY4NjEsMTQgQEAgLSAodm9pZClfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9u
CiAgICAgW19jb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9uXTsKIH0KIAor
LSAoZGlzcGF0Y2hfYmxvY2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5n
U3RhdGVGb3JUZXN0aW5nCit7CisgICAgW19jb250ZW50VmlldyBfc3RhcnRTdXBwcmVzc2luZ1Nl
bGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OlJlc2V0dGluZ1N0YXRlQmV0d2VlblRl
c3RzXTsKKyAgICByZXR1cm4gW1tbY29udGVudFZpZXcgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRW
aWV3PihfY29udGVudFZpZXcuZ2V0KCkpXSB7CisgICAgICAgIFtjb250ZW50VmlldyBfc3RvcFN1
cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6UmVzZXR0aW5nU3Rh
dGVCZXR3ZWVuVGVzdHNdOworICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOworfQorCiAtIChVSVZp
ZXcgKilfZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldwogewogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IGNlMTYwODJhNGNhZmEzNTRkNzM4N2Y5MjQyNGU2NDFkZmQwM2U0
ODAuLjgyNzZjNjI5NzBjMmJhMzc1ZWJiYTFhYmY0NjE2ZjYwNjhhNmFjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApA
QCAtNTgwLDQgKzU4MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0
RWRnZSkgewogLSAodm9pZClfcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3Rpbmc7
CiAtICh2b2lkKV9wcm9jZXNzRGlkUmVzdW1lRm9yVGVzdGluZzsKIAorLSAoZGlzcGF0Y2hfYmxv
Y2tfdClfc3VwcHJlc3NTZWxlY3Rpb25WaWV3c1doaWxlUmVzZXR0aW5nU3RhdGVGb3JUZXN0aW5n
OworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMWE3ODRhNmViNzdlOTdlODdiODE4NGUxNzU1NjAz
NTc5MzE4NTRlYy4uY2Y0OWU1YzA0MTZhMjMxNzJhNDIxMzAzOThlZDY5ODFhYzNiNTBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBT
dXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEVkaXRhYmxl
Um9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IDEgPDwgMCwKICAgICBGb2N1c2VkRWxl
bWVudElzVG9vU21hbGwgPSAxIDw8IDEsCi0gICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmluZyA9IDEg
PDwgMgorICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIsCisgICAgUmVzZXR0aW5n
U3RhdGVCZXR3ZWVuVGVzdHMgPSAxIDw8IDMsCiB9OwogCiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyB7CkBAIC01NTgsNiArNTU5LDkgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIAog
LSAodm9pZClfZGlkQ2hhbmdlTGlua1ByZXZpZXdBdmFpbGFiaWxpdHk7CiAKKy0gKHZvaWQpX3N0
YXJ0U3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246KFdlYktpdDo6U3VwcHJl
c3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb24pcmVhc29uOworLSAodm9pZClfc3RvcFN1cHByZXNz
aW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOihXZWJLaXQ6OlN1cHByZXNzU2VsZWN0aW9u
QXNzaXN0YW50UmVhc29uKXJlYXNvbjsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY20ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc2NtLnB5CmluZGV4IGFhMWY3ZWE5ZmQ4YWM4YzI3ODgxNmQ5ZTNjMjgzYzVkM2Fm
YjUzNDMuLjYzYjdhYjhlYTcyNjhkYTdiNjgyMzJhNDVmOTA2MmE5ODhkNTQ5NjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQpAQCAt
NjgsMTQgKzY4LDE3IEBAIGNsYXNzIFNDTToKICAgICAjIEEgd3JhcHBlciB1c2VkIGJ5IHN1YmNs
YXNzZXMgdG8gY3JlYXRlIHByb2Nlc3Nlcy4KICAgICBkZWYgcnVuKHNlbGYsIGFyZ3MsIGN3ZD1O
b25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPU5vbmUsIGlnbm9yZV9lcnJvcnM9RmFsc2Us
IHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVybl9zdGRlcnI9VHJ1ZSwgZGVjb2RlX291dHB1
dD1UcnVlKToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHNldCBjd2QgYXBwcm9wcmlhdGVs
eS4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChhcmdzLAotICAg
ICAgICAgICAgY3dkPWN3ZCwKLSAgICAgICAgICAgIGlucHV0PWlucHV0LAotICAgICAgICAgICAg
ZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAotICAgICAgICAgICAgaWdub3JlX2Vycm9ycz1p
Z25vcmVfZXJyb3JzLAotICAgICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1yZXR1cm5fZXhpdF9j
b2RlLAotICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1yZXR1cm5fc3RkZXJyLAotICAgICAgICAg
ICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsCisgICAgICAgICAgICAg
ICAgY3dkPWN3ZCwKKyAgICAgICAgICAgICAgICBpbnB1dD1pbnB1dCwKKyAgICAgICAgICAgICAg
ICBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgaWdub3JlX2Vy
cm9ycz1pZ25vcmVfZXJyb3JzLAorICAgICAgICAgICAgICAgIHJldHVybl9leGl0X2NvZGU9cmV0
dXJuX2V4aXRfY29kZSwKKyAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPXJldHVybl9zdGRl
cnIsCisgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0KQorICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gIiIKIAogICAgICMg
U0NNIGFsd2F5cyByZXR1cm5zIHJlcG9zaXRvcnkgcmVsYXRpdmUgcGF0aCwgYnV0IHNvbWV0aW1l
cyB3ZSBuZWVkCiAgICAgIyBhYnNvbHV0ZSBwYXRocyB0byBwYXNzIHRvIHJtLCBldGMuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IGRk
ODY1YzBiODcyODI3YzYxZWVmYjk4MjVmMGUwMzgwMDM3YjAzZGUuLmRhYTI3NWY0YTRmOWM3ZTcw
MWQ0N2NkNDQ2N2UzZjhhZGFhYjQxNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CkBAIC02NCwxMCArNjQsMTAgQEAgY2xhc3MgQ2hlY2tT
dHlsZShBYnN0cmFjdFN0ZXApOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLmRlcHJlY2F0ZWRf
cG9ydCgpLmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCkgKyBhcmdzLCBjd2Q9c2VsZi5fdG9v
bC5zY20oKS5jaGVja291dF9yb290KQotICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHJlLXJh
aXNlIHRoZSBleGNlcHRpb24gaGVyZSB0byBoYXZlIHRoZQogICAgICAgICAgICAgICAgICMgc3R5
bGUtcXVldWUgZG8gdGhlIHJpZ2h0IHRoaW5nLgotICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAg
ICAgICAgICAgICAgICBwcmludCBlCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9vbC51c2Vy
LmNvbmZpcm0oIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT8iKToKICAgICAgICAg
ICAgICAgICBzZWxmLl9leGl0KDEpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKaW5kZXggNjgwZDJlMjQ2MTcxY2M2NmNjMzZiZmFiNGVlZDgzZDU3ZGJhYWU0OS4uYWU5ODQ1
NzA3OTU2YjA1YmExMjM0NjBmMjQ0ZDBlMjJkYjMzMWM1NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlICJJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjZW5kaWYKKwogT0JKQ19DTEFTUyBOU1N0cmluZzsK
IE9CSkNfQ0xBU1MgVUlLZXlib2FyZElucHV0TW9kZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbjsKQEAgLTU3OSw2ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fb3BlblBhbmVsRmlsZVVSTHNNZWRpYUlj
b247CisgICAgQmxvY2tQdHI8dm9pZCgpPiBtX3dlYlZpZXdSZXNldEJsb2NrOwogI2VuZGlmCiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXJQcm94eT4gbV9ldmVudFNlbmRlclByb3h5
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
CmluZGV4IDY2MWYyOGViM2Y2Y2QyMWE5MWRmYTcwZTNlYWU3Mzk4YzZiMDk2OWEuLjJiMGI2MjMy
ZmU1ZTFlNDcyNjNmZDliZjY2MDhiNDgwODQ0NTNkZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTMxNSw2ICszMTUsMzkgQEAg
c3RhdGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogaW5mbywgY29uc3Qgdm9p
ZCosIHNpemVfdCkKIH0KICNlbmRpZgogCitzdGF0aWMgQk9PTCBmb3JFYWNoVmlld0luSGllcmFy
Y2h5KFVJVmlldyAqdmlldywgdm9pZChebWFwRnVuY3Rpb24pKFVJVmlldyAqc3VidmlldywgQk9P
TCAqc3RvcCkpCit7CisgICAgQk9PTCBzdG9wID0gTk87CisgICAgbWFwRnVuY3Rpb24odmlldywg
JnN0b3ApOworICAgIGlmIChzdG9wKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgZm9yIChV
SVZpZXcgKnN1YnZpZXcgaW4gdmlldy5zdWJ2aWV3cykgeworICAgICAgICBzdG9wID0gZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeShzdWJ2aWV3LCBtYXBGdW5jdGlvbik7CisgICAgICAgIGlmIChzdG9w
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBzdG9wOworfQorCitzdGF0
aWMgTlNBcnJheTxVSVZpZXcgKj4gKmZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKFVJVmll
dyAqdmlldywgQ2xhc3Mgdmlld0NsYXNzKQoreworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OworICAgIGZvckVhY2hWaWV3SW5IaWVyYXJjaHkodmlldywgXihVSVZpZXcgKnN1YnZpZXcsIEJP
T0wgKnN0b3ApIHsKKyAgICAgICAgaWYgKFtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6dmlld0NsYXNz
XSkKKyAgICAgICAgICAgIFt2aWV3cyBhZGRPYmplY3Q6c3Vidmlld107CisgICAgfSk7CisgICAg
cmV0dXJuIHZpZXdzLmF1dG9yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqaW5saW5l
RGVzY3JpcHRpb24oTlNBcnJheSAqb2JqZWN0cykKK3sKKyAgICBOU011dGFibGVBcnJheSAqc3Ry
aW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpvYmplY3RzLmNvdW50XTsK
KyAgICBmb3IgKGlkIG9iamVjdCBpbiBvYmplY3RzKQorICAgICAgICBbc3RyaW5ncyBhZGRPYmpl
Y3Q6W29iamVjdCBkZXNjcmlwdGlvbl1dOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIlslQF0iLCBbc3RyaW5ncyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJd
XTsKK30KKwogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25h
cHNob3RJbWFnZSgpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMzQ1
LDYgKzM3OCwxNSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5k
b3dTbmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gcmVzdWx0OwogCiAjZWxzZQorICAgIE5TTG9n
KEAiPFdLPjogIik7CisgICAgTlNMb2coQCI8V0s+OiAqKiogVEFLSU5HIFNOQVBTSE9UIEZPUiAl
QCAqKioiLCBbW3BsYXRmb3JtVmlldygpIFVSTF0gcGF0aF0pOworICAgIGZvciAoVUlWaWV3ICp2
aWV3IGluIGZpbmRBbGxWaWV3c0luSGllcmFyY2h5T2ZUeXBlKHBsYXRmb3JtVmlldygpLCBOU0Ns
YXNzRnJvbVN0cmluZyhAIlVJVGV4dFNlbGVjdGlvblZpZXciKSkpIHsKKyAgICAgICAgZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeSh2aWV3LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkgewor
ICAgICAgICAgICAgTlNMb2coQCI8V0s+OiBUaGUgYW5pbWF0aW9ucyBvbiAlQCBhcmU6ICVAIiwg
c3VidmlldywgaW5saW5lRGVzY3JpcHRpb24oc3Vidmlldy5sYXllci5hbmltYXRpb25LZXlzKSk7
CisgICAgICAgIH0pOworICAgIH0KKyAgICBOU0xvZyhAIjxXSz46ICIpOworCiAgICAgQ0dGbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDI7IC8vIEZJWE1FOiBoYXJkY29kZSAyeCBmb3Igbm93LiBJ
biBmdXR1cmUgd2UgY291bGQgcmVzcGVjdCAxeCBhbmQgM3ggYXMgd2UgZG8gb24gTWFjLgogICAg
IENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IsIDEpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL0NoYW5nZUxvZwppbmRleCBmMmVkYWVkNWNmYTNjN2I1MTEwZGQ0NTI3ZTA5NTQ5
NjQyNDc5ZjUxLi5iZGI4NmQwZDQ1ZmRhMmQxMWIxMDBjMWIyZmRhOTIxMTRlMGY2YTU2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5
LTEwLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1MgMTNdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLnN2
ZyBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjEyNDI5Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb2VzIHRoaXMgcmVwcm9kdWNl
IGluIEVXUz8/CisKIDIwMTgtMTEtMDYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVwZGF0ZSBhbGwgdGVzdHMgdG8gbWF0Y2gg
dGhlIGxhdGVzdCBBUEkgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwNy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTAwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTAwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAw
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTAxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAxOS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEwMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDIzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAy
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyNy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjgu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEwMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDI5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMjkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
MzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTAzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwMzkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNDktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDQ5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTIuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDUz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEw
NTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDU5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDYzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcxLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDcz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDczLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDgzLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTA4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTA4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEwODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA4OS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MDg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDg5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEwOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEwOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTA5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTA5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTA5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEwOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTA5OS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEwOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDYuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMDkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTExLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExMTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTExOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEx
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMi1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjIuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTEyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTMzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTEzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTEzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTEzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQwLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQxLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTQ5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTUzLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE1OS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTU5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTE2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjAuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2Ny1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTE2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTE2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNjkuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE2OS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExNjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3My5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3NS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExNzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTE3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE3OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTExOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4My1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTE4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4Ny5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTExODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTE5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTExOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTYu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTExOTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTExOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMTk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTExOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTExOTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDAuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjAyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjAyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjA4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjA4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjA5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMDkuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEwLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjExLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjEyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjE4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMjE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjE5LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIxOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjIzLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTIyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI4LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTIyOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIy
OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjI5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjI5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzMy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIz
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTIzOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTIzOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTIzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0My5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0NS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI0OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI0OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Mi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1My1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU3LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTI1Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1Ny5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI1OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTI2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2NS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyNjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNjgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTI2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjcyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjcyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzYtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEyNzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyNzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyNzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjc4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyNzktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEyOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEyOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMjg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEyODguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEy
ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMjg5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEyOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MjkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjkyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjkzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mjk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMjk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMjk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTI5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEyOTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEyOTkuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzAxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwMy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzA3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMwOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMwOS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMwOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMxNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMxNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTcuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTMxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMxOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTMyNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyNy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMyOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMy
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzMjguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMyOS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzNy1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzMzctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTMzOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzMzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTMzOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzMzkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0My5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDUuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDYtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM0OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTEzNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTEzNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTEzNTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzYxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzYyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzYz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzY3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzNjkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzcwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzcwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcxLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzcy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzczLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzczLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
NzQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEz
Nzcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xMzc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xMzc5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzc5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzc5LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzgxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
MzgxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzgzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzgzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzg3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
Mzg3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg3LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTM4Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg4LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTM4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xMzg5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzg5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTEzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzkxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkxLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzky
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xMzk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTEzOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTM5OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xMzk5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTM5OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTM5
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTEzOTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDAyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwNy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDA4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQwOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQw
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MDkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDEyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDEzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTUuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTYtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0MTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDE4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDE5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQxOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQxOS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDIzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjMuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDIzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0MjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyNy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Mjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE0MjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0MjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDI5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mjkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDMxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0MzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
MzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDM3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDM3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0MzgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDM4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Mzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Mzkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQxLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0NDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDQ4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDQ5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDQ5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ0OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDUxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDUxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1MS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDUzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDUzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDU3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDU3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU3LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ1Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ1OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDU5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDU5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDYxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYxLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDYyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYy
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDYzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NjctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNDY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDY4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ2OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ2OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Njkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NDctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNDcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3MS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDcyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDcyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0NzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ3Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0Nzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0NzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNDc4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ3OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ3OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Mi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDgzLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg2LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTQ4Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4Ny5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ4OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTQ4OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE0ODguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0ODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTQ5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5MS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE0OTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE0OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTQ5OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTQ5OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNDk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE0OTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTQ5OS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE0OTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1MDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1MDAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1My5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTU5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE1OS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNi5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2MS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2My5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ni5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTY5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTcxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE3OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTc5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTgzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTE4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTg4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xODkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTE5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0xOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0xOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0xOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTkzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTE5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0xOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0x
OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0xOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTE5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0xOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0xOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMTk5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTE5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTE5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjAz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwMy5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIw
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwNy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMDktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIwOS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTAuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEwLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjExLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEyLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMi1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTIuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxMy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjEz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE0LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE2LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE3LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxNy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIx
OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMTkuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIwLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIy
MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjAuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjEtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIxLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjIyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyMy5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI0LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjUtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjYuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjcuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI3LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI4LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjI5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIyOS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMjkuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTIzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjMzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTIzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTIzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIz
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTIzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yMzgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjM5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTIzOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTIzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQxLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0MS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ni1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0Ny5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNDku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1MC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1NS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjU5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI1OS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNTku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNi5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2MS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ni5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjY5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjcz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI3OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yNzktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjc5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjgzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTI4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI4OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yODkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTI5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTI5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0yOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjky
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0yOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjkzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTI5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0y
OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0yOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0yOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTI5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0yOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0yOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMjk5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTI5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTI5OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDAtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDEuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDIuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAy
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwMy5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA0LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDQuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA1LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA2LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwNy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDgtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA4LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMDkt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMwOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMw
OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTAuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEx
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEyLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxMi1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTIuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMx
My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzEzLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE0LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE2LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxNy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMxOC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMTkuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIwLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjAuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIx
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIyLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMi5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyMy5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI0LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjUtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMy
Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjYuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zMjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjcuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI4
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzI5LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMyOS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMjkuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zMzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzMzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTMzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTMzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTMzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTMzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zMzgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zMzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzM5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTMzOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTMzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQxLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0MS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0NS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ni1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0Ny5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM0OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1MC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzUzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1NS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzU5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNTkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ni5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zNjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzY5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zNzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zNzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zNzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM3OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zNzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zNzktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zNzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzc5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzgzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tMzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTM4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tMzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM4OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zODkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTM5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTM5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi0zOTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
MzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi0zOTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzkzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTM5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi0zOTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0z
OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi0zOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tMzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tMzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTM5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi0zOTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTM5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi0zOTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi0zOTktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tMzk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Mzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTM5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTM5OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDAt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDEuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDIuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDMtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAz
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDAzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwMy5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA0LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDQuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA1LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA2LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQw
Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MDgtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA4LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQwOS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTAuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEw
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEyLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxMi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTIuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDEzLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE0LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTYtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE2LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTct
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQx
Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MTkuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIwLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjAuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQy
MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIxLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIyLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyMy5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI0LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjUtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyNi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjYuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjcuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDI5LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQyOS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mjkuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDMzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQz
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00MzgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDM5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQzOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQxLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0MS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0NS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ni1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0Ny5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ0OS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDQ5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDUzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1My1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1NS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDU4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NTkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ni5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Njguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDY5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00Nzguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ3OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00NzktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDc5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDgzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNDg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTQ4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNDg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ4OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00ODkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTQ5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTQ5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi00OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi00OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDkzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTQ5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi00OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi00OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi00OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNDk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTQ5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi00OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi00OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NDk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi00OTktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNDk5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNDk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTQ5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTQ5OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDEuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDIuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDMtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTAzLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwMy5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA0LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDQu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA1LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA2LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUw
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA3LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MDgtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA4LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUwOS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTAuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTEtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEx
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTExLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEyLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxMi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTIuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTEzLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE0LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUx
NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTYtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE2LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxNy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MTkuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIwLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjAuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIxLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIyLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyMy5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjQtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI0LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjUt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUy
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjYuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjcuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MjgtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTI5LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUyOS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mjkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTUzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01My5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTUzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTUzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTUzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTUzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTM5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTUzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQxLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0MS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0NS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0Ny5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU0OS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NDktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTQ5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTUzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1My1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1NS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1Ny1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTU4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NTkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2MS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTYzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ni5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Njguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTY5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTctZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01Nzguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU3OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01NzktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTc5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTguc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTgzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU4OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01ODkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi01OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTU5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTU5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTU5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi01OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTkzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTU5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi01OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi01OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi01OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01
OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTU5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTU5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi01OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi01OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi01OTktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNTk5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTU5OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAw
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDEuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDIu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDMtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjAzLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwMy5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA0
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDUuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA1LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA2LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA3LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYw
Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwNy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MDgtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA4LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjA5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYwOS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTAuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTEtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjExLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEyLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxMi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTIu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjEzLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE0LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYx
NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE1LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTUuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTYtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE2LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxNy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTguc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MTku
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjE5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIwLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjAuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIxLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIyLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjIzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYy
My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjQtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI0LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTYyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjYuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjcuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MjgtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI4LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjI5LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYyOS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mjku
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02My5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMwLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMi1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzItZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMyLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzMt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYz
My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzUuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzYtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTYzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM3LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTYzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTYzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzcuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTYzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM4LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjM5LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTYzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQwLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDEtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0MS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Mi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDIuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDMuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ1LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0NS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDUuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ2LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ3LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY0OS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NDktZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjQ5LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTAuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTEuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUy
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Mi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjUzLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1My1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTMuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1
NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU1LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1NS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1Ny1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU3LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTgtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY1OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NTkuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ni5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYwLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYxLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2MS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjEuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Mi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjItZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYy
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjYzLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2NS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY1LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjYtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY2LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ni5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2
Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njcuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Njguc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjY5
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY2OS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjctZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Ny1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzAtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjcxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3MS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Mi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzIu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3My1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjczLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzQtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc0LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzYuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc2LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc3LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc4LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02Nzguc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY3OS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02NzktZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjc5
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjguc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODAuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODEu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODItZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjgz
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02
ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg0LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNjg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg1LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg2LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4
Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODYuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4Ny1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODctZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg3LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Njg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjg4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNjg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY4OS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02ODku
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi02OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTAtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NjkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkwLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkxLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTY5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5MS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTEu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTY5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkyLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi02OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjkzLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5
My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk0LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTY5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi02OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5NS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi02OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTUtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi02OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk1LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi02OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ni5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTY5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNjk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTY5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5Ny5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTcuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi02OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTgu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNjk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi02OTktZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNjk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNjk5LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNjk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTY5OS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMS5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDEu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMi1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAyLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDMtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzAzLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwMy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDUuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA1LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA2LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA3LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwNy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MDgtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA4
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzA5LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcwOS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTAu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTEtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzExLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMS5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEy
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTMuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzEzLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE0LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE1LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcx
NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTUuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTYtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE2LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxNy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTgu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcxOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzE5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIwLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTcyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjAu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTcyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIxLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIyLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcy
Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzIzLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTcyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjMuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjQtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI0LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTcyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTcyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjYuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjcu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MjgtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI4LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzI5
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mjkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03My5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMwLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMi1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzItZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMyLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczMy5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTczMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzYtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM2LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM3LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTczNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczNy1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTczNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzcu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTczOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Mzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM4LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzM5LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTcz
OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTczOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MC1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDAtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQwLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDEt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0MS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Mi5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDIuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDMuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ1LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0NS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDUuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ2LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ3LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0
OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDguc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc0OS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NDktZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzQ5LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTAuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTEuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Mi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzUzLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1My1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTMuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU0LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU1LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ni5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1Ny1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTctZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU3LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTgt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1
OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc1OS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NTkuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ni5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYw
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYxLWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2MS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjEuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2
Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjItZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYyLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzYzLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2NS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY1LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjYtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ni5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2Ny5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njcuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Njguc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NjktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc2OS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzctZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Ny1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzAtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcxLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3MS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Mi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3My1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzczLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzQtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc0LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzUuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzYuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc3
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc4LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3OC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzguc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc3
OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03NzktZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzc5LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzguc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODAu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgxLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODItZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
NzgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi03ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg0LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tNzg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg1LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg2LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ni1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODYuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4Ny1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODctZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg3
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg4LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc4OS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi03OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTAtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tNzkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkwLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkx
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTc5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTIuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkyLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzkzLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTc5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk0LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5
NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTc5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi03OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTQuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5NS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTUtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi03OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk1LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi03OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
Nzk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ni5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTc5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tNzk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTc5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5Ny5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi03OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03
OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tNzk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk4LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi03OTktZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tNzk5LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tNzk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTc5OS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAwLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMS5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMi1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDIt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAyLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDMtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODAzLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwMy5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDUuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA2
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNi5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA3LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwNy1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgw
OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDgtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA4LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODA5LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgwOS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgx
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMC1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEwLnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTEtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODExLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMS5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTIuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTMuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODEzLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE0LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE1LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNS1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTUuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNi1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTYtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE2
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE3LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxNy5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgxOS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTkt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODE5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIw
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjEuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIxLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIyLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODIzLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgy
My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyMy1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjMuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNC1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjQtZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI0LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTgyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNi5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjYu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyNy1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI3LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MjgtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODI4LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mjkuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04My5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMwLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgz
MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMxLWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzEuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMi1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzItZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMyLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMz
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzMy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTgzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzUu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzYtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM2LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNi5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM3
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTgzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Mzguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM4LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODM5LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTgzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTgzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MC1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDAtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQwLnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0MS5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Mi5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDIuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDMuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ0LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NC5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ1LWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0NS1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDUu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ2LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ3LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0
Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ4LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDguc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg0OS1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NDktZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODQ5LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTAuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTEuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTItZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUy
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Mi5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODUzLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1My1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTMuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU0LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU1LnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1
Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1Ny1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTctZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU3LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg1OS5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NTkuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ni5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MC5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYxLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2MS1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjEuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYyLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODYzLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2NS1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjUtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY1LnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjYt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2
Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2Ny5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njcuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Njguc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NjktZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODY5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg2OS5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODctZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Ny1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3
MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcwLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcxLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3MS5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Mi5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3My1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODczLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzQtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc0LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NC5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzUuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzYuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04NzctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3Ny5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc4LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg3OC1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzguc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODc5LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODguc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4MS1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgxLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODItZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODgyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Mi5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi04ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tODg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg1
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4NS5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg2LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4Ni1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODYuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4
Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODctZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg3LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg4LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg4OS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi04OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTAtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkwLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MC5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
ODkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTEuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTg5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTIuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkyLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODkzLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTg5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk0LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTg5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NC1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTg5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTQuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5NS1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTUtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi04OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk1
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi04OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tODk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk2LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ni5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTg5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTg5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5Ny5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04
OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi04OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tODk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk4LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi04OTktZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tODk5LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tODk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTg5OS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MDAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTAwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAwLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwMS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMS5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MDEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMi1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MDItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MDIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAyLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDMtZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTAzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwMy5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTA0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MDQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkwNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDUuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTA2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkwNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNi5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA3LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwNy1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkwNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkwOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MDgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDgt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MDguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA4LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTA4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MDktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTA5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTA5LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkwOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMC1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAt
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTAtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTEwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEwLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTEtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTExLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTExLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMS5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTEyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxMi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkxMy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTMuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTEzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTQtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE0
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkxNC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNC5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE1LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkxNS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNS1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkxNS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTUuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkx
Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MTYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTYuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE2LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTE2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MTctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTE3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE3LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxNy5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkxNy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE4LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkxOC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MTguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTguc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkxOS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MTktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MTkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTE5LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05Mi1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTIwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjAuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05MjAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkyMS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjEuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIxLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTIxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjItZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIyLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkyMi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMi5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTIzLWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkyMy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3
NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyMy1leHBlY3RlZC5zdmcKQEAgLTAs
MCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAg
ICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NE
QVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5
IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRD
b250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMg
PSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBh
ZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4
ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAg
ICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkyMy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1
MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjMuc3ZnCkBAIC0wLDAg
KzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRl
eHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxz
Y3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNC1l
eHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBj
NmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjQtZXhwZWN0
ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAg
PHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAg
dmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOwor
ICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0K
KworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9k
ZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7
CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsg
eCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsg
eCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MjQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlk
ODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI0
LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+
PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MjUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0
PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHks
IHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJy
b3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGls
ZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0
ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAs
IDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0
KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tp
XSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENo
aWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBd
XT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI1LnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNS5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTkyNS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQu
ZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkyNi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9
IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9u
IHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAg
IGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7Cisg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOwor
ICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0
cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7
CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxl
bmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFz
dFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNi5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MjYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjYuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9
IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRl
eHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmly
c3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyNy1leHBlY3RlZC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjct
ZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4
MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjctZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEs
MzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRl
eHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsK
KyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkp
OworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVu
dCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEu
Yi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0g
dGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFk
diAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mjcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTI3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI3LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MjgtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTI4LWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTI4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTI5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTky
OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkyOS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mjkuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05Mjkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05My5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzAtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMwLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTkzMC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMxLWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkz
MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMS1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzMS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05MzEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzEuc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMi1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05MzItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzItZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05MzIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMyLnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05MzMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2
YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTMzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0Pgor
ICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIp
IHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3Rh
dGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChl
KTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0
LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEp
OworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHgg
PSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNb
aV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwg
MTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxk
LCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTMzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzMy5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTkzMy5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48
L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTM0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzNC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEw
MCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1
dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcu
YXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAg
IHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmlu
Z0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0
aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRl
eHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNC5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05MzQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0
ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNw
Ij5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQ
YXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0
ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RD
aGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNS1leHBlY3RlZC5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhw
ZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdj
OGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzUtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQg
eD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAg
ICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9
IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5j
LmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAv
IDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAg
IH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
MzUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTM1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0
ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM1LnN2ZwpAQCAtMCwwICsxLDE1IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4
bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0
aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzYtZXhwZWN0ZWQu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQz
NDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM2LWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
PgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+
PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0
ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUu
dGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2
YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAg
dmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAg
aWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTM2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIy
ZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNi5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4K
KyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTM3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIx
NzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy1l
eHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9n
PgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7Cisg
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwg
cik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7Cisg
ICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJl
bnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAg
ICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAq
IGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAx
MDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwg
NTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzNy5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzcuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Mzcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0
UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTkzOC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05MzgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8
L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywg
eCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4
IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1
dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVu
ZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIg
ZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5n
dGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAg
ICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1
dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0
VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAx
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZp
cnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Mzguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM4LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTM4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5i
LmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBh
dGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05MzktZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEw
MCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVu
Y3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNl
dEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAg
IGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOwor
ICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUu
IjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
MF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0
U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7
IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwg
NTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
W3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTM5LnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTkzOS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJj
MGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTkzOS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6
aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2
YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVsw
XTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNl
dFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0
aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQtZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3
NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NDAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDAtZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQwLnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NDEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQx
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQxLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0MS5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTQyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Mi5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDIuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0My1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0
ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFm
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0i
MTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBm
dW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7
CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQu
ZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIg
PCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDMu
c3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTQzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2
YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQzLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8
IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
CistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEw
MCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGlu
azpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAg
IHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIp
WzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDQtZXhwZWN0ZWQuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTQ0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgy
Nzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ0LWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgor
ICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0
Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4
dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIg
cyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFy
IGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYg
KHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTQ0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYy
ZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NC5zdmcKQEAgLTAs
MCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBp
ZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBz
dHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48
dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAg
PHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ1
LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNj
MGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS1leHBl
Y3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgor
ICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAg
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7
CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAg
fQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnRO
b2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFk
djsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAg
KyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAg
KyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0NS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThh
OWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NDUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0
aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk0Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NDYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3Rl
eHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwg
eSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4Iiwg
eCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
InJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENo
aWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9
IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgo
MCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBw
dXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChz
W2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0
Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDYuc3ZnIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ2LnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTQ2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMu
ZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDctZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIg
eT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rp
b24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUu
c2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAg
ICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07
CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTAp
IHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3Mu
bGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChs
YXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ3LnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk0Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0Ny5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQor
ICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAw
IGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4K
KyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJl
Zj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIg
dGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ4LWV4cGVjdGVkLnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0
OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJm
ZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OC1leHBlY3RlZC5zdmcKQEAgLTAsMCAr
MSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8
dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRB
WworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOwor
ICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5Iiwg
eSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250
ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAi
YS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8
IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsg
YWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9
CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk0OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NDguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5
Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDguc3ZnCkBAIC0wLDAgKzEs
MTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAi
IGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQ
YXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3Jp
cHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk0OS1leHBl
Y3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NDktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NDktZXhwZWN0ZWQu
c3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0
dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAg
ICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKwor
ICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsK
KyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7Cisg
ICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwg
MTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwg
OTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NDkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1
YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTQ5LnN2
ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90
ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTUwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTAuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1MS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTEuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTUxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUxLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTItZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTUyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUyLWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTUyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Mi5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTUzLWV4
cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk1My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2
YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1My1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8
c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7Cisg
ICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQor
CisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2Rl
OworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsK
KyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4
LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4
LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk1My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4
NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTMu
c3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4K
KyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1v
bm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48
L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk1NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
MDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+
CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwg
cikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxk
KGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRl
eHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwg
MSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
eCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQo
c1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ld
LCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hp
bGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1d
Pjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU0LnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTU0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0i
Zm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5l
LjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0Pgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NTUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0i
MTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24g
cHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAg
Zy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07Cisg
ICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3Ry
aW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsK
KyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVu
Z3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0
VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU1LnN2ZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1
NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQy
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1NS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAg
ICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGgg
NTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAg
PHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0i
I3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4
dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJz
dENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU2LWV4cGVjdGVkLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1l
eHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgw
N2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ni1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
OSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4
dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWwor
ICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50
ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5i
LmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2
IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk1Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NTYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1
YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTYuc3ZnCkBAIC0wLDAgKzEsMTUg
QEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9
Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRo
IHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+
CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQ
YXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1Ny1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQw
ZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTctZXhwZWN0ZWQuc3Zn
CkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlw
dD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAg
ZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAg
IHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAg
ICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAg
ICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAw
LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTAp
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NTcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU3LnN2ZwpA
QCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxw
YXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
ZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0
PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NTgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQw
MjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4
LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8
L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsK
KyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAg
ICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsK
KyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBh
cmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBp
ICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0s
IDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUw
LCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAw
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTU4LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk1OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3Rl
eHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTU5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk1OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+
YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChz
LCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUo
IngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJp
YnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBw
ZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZh
ciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xl
bmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAg
ICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxh
c3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAt
IDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQu
Zmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk1OS5zdmcgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NTkuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NTkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYg
MjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5h
LmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRo
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGls
ZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ni5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05Ni5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRi
MjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjAtZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYw
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYwLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTYwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk2MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MC5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYxLWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk2MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2MS1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjEuc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk2Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjItZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjIuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYyLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTYyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NjMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTYzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAw
Ij5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0
KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5h
cHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAg
dmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAg
ICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
bGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3Ro
IC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4
dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTYzLnN2ZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2My5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk2My5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAg
diAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRl
eHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3Ai
PmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBh
dGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENo
aWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8
L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY0LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBl
Y3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4
YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4
PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAg
IGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0g
czsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMu
ZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0
LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8g
MiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAg
fQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRl
eHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5z
ZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2
NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NjQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRk
YTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjQuc3ZnCkBAIC0wLDAgKzEsMTUgQEAK
KzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0g
MTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhs
aW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+Cisg
ICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRo
IilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4
dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2NS1leHBlY3RlZC5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NjUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0
ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjUtZXhwZWN0ZWQuc3ZnCkBA
IC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48
IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRl
eHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50
ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZh
ciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2
YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBp
ZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7
CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NjUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJm
ZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY1LnN2ZwpAQCAt
MCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRo
IGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQi
IHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2Ui
Pjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0Pgor
ICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFu
Z2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NjYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3
M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+
CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAg
ICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCBy
KTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAg
ICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVu
dE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICog
YWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEw
MCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1
MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZp
cnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY2LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ni5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5
OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk2Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMw
cHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQ
YXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTY3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk2Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwv
dGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4
LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngi
LCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0
ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5k
Q2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBn
ID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAg
IHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0
KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmly
c3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2Ny5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njcuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05Njcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0
eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIu
Yy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0
aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwg
OSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3Jp
cHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NjgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAw
IiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5j
dGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0
QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAg
ZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7Cisg
ICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4i
OworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVsw
XTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRT
dWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1
MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilb
cy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Njguc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTY4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMw
ZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY4LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0t
CisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCist
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwx
MDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIv
PgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpo
cmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZh
ciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBd
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NjktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTY5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTY5LWV4cGVjdGVkLnN2ZwpAQCAtMCww
ICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAg
IDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RB
VEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7
CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInki
LCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENv
bnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9
ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFk
diA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHgg
KyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTY5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUw
MDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk2OS5zdmcKQEAgLTAsMCAr
MSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0i
cCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4
dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNj
cmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTctZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1
NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Ny1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTEx
YjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk3MC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05NzAtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzAuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcwLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTcwLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05NzEtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTcxLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcxLnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3MS5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTcyLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Mi5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05NzIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzIuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3My1leHBlY3RlZC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05NzMtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3
NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzMtZXhwZWN0ZWQuc3ZnCkBAIC0w
LDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+Cisg
ICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtD
REFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQi
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0
Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBz
ID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIg
YWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAo
eCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7Cisg
ICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05NzMuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJm
NTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTczLnN2ZwpAQCAtMCww
ICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlk
PSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0
ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8
c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uu
c2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzQt
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2Mw
YzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LWV4cGVj
dGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBt
b25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+Cisg
IDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAg
IHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsK
KyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9
CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5v
ZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2
OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCAr
IHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCAr
IHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0
Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc0LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5
ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3
NC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
PgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHgg
bW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRo
PjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEp
OworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTc1LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3NS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9
ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4
dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5
LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
cm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hp
bGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0g
dGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1
dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNb
aV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RD
aGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3NS5zdmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzUuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05NzUuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxl
PSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5k
LmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5m
aXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ni1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3Zn
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05NzYtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5
PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlv
biBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAg
ICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsK
KyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJT
dHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkg
eworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAg
IHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5s
ZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxh
c3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzYuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTc2LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIy
NDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc2LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisg
ICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAg
aCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgor
ICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVm
PSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0
ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3Rh
cnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZp
cnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzctZXhwZWN0ZWQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3
LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZm
ODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc3LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsx
LDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0
ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5
KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRl
bnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJh
LmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9
IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBh
ZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJh
bmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTc3LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk3Ny5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3Ny5zdmcKQEAgLTAsMCArMSwx
NSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIg
ZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBh
dGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlw
dD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAg
IHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVu
ZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRk
UmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc4LWV4cGVj
dGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk3OC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1
ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk3OC1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0
cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAg
ICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisg
ICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOwor
ICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAg
ICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAx
MDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5
MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxk
LCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk3OC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVh
MTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzguc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAg
PHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9
InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9z
cGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3Rl
eHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAg
ICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk3OS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05NzktZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZh
ZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
NzktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+Cisg
IDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikg
eworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7Cisg
ICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0
ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUp
OworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQu
cGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9
IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tp
XSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAx
NTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRl
eHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQs
IDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05Nzkuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTc5LnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTc5LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9u
dDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwv
dGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RD
aGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9z
dmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OC1leHBlY3RlZC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTguc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgwLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4MC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MC5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05ODAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODAuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4MS1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
ODEtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODEtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODEuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgxLnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODItZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTgyLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Mi5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTgzLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQw
NmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4My1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZv
bnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4K
KyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCBy
KSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90
YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQo
ZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4
dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAx
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4
ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChz
W2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0s
IDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGls
ZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+
PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4My5zdmcgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODMuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNl
bGVjdGlvbi05ODMuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxs
PSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJm
b250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUu
PC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJz
dENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7Cisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk4NC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODQtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAg
ICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBo
IDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+Cisg
IDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIx
MDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBw
dXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBn
LmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAg
ICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgewor
ICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5n
dGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RU
ZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODQuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg0LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAg
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1
MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8
dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIj
cCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0
UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
dGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0
Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
IDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODUtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4
cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3
YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg1LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0
IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisg
ICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQg
PSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIu
Yy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRl
eHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYg
LyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
dGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdl
LnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTg1LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk4NS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVj
NGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4NS5zdmcKQEAgLTAsMCArMSwxNSBA
QAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0i
TSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lk
dGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGgg
eGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4K
KyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBh
dGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0
ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg2LWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBk
MzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4Ni1leHBlY3RlZC5zdmcK
QEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNl
Ij4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0
PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
dGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBl
LnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAg
dmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAg
IHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAg
IGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAs
IDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAx
KTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk4Ni5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFi
MmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODYuc3ZnCkBA
IC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBh
dGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFj
ZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+
CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICBy
YW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk4Ny1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05ODctZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAy
MTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODct
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAz
MHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwv
Zz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgewor
ICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIs
IHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOwor
ICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFy
ZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkg
KiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwg
MTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAs
IDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQu
Zmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDAp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2Ny
aXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODcuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg3LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTg3LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDog
MzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4
dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGls
ZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05ODgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTg4LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBz
dHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5h
PC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMs
IHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgi
eCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmli
dXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBl
bmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFy
IGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVu
Z3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAg
ICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBw
dXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFz
dFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0g
MV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5m
aXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg4LnN2ZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk4OC5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAy
MDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQg
c3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEu
Yi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGgg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQ
YXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxk
LCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Nj
cmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTg5LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3Rl
ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIx
MDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1
bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5z
ZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAg
ICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsK
KyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5l
LiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIp
WzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0Lmdl
dFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8
IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQi
KVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRF
bmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk4OS5z
dmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05ODkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZi
YzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05ODkuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8K
Ky0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAw
LDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIx
Ii8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5r
OmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAg
dmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilb
MF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBh
dGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LWV4cGVjdGVkLnN2ZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9u
LTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0
MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTktZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRw
YXRoLXNlbGVjdGlvbi05OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDli
NzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5LnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBk
PSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13
aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0
aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0
PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5k
KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRS
YW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTAtZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1z
ZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVk
MGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkwLWV4cGVjdGVkLnN2
ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
IDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3Bh
Y2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3Jp
cHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAg
IGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAg
ICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7Cisg
ICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAg
ICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEw
MCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkw
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQs
IDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTkwLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3Zn
L3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWEx
MWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MC5zdmcK
QEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8
cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
cmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3Nw
YWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4
dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAg
IHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rp
b24tOTkxLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFk
MDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
MS1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6
IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAg
PC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7
CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRl
Iiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7
CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5w
YXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0g
aSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ld
LCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1
MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9z
Y3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5MS5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTEuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJu
b25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250
OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90
ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENo
aWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2
Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4
dHBhdGgtc2VsZWN0aW9uLTk5Mi1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTItZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUw
IHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxn
IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAi
PmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQo
cywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRy
aWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFw
cGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2
YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAg
ICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBs
YXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGgg
LSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0
LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5n
ZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTIuc3ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTkyLnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2
IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4
dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+
YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4
dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hp
bGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwv
c2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3Yzhh
ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkzLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBA
Cis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJN
IDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0
aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9
IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAg
ZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAg
ICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBz
OworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5k
LmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0
IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQu
Z2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5n
dGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAy
IDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4
dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNl
dEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTkz
LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLTk5My5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRh
NmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5My5zdmcKQEAgLTAsMCArMSwxNSBAQAor
PCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAx
MDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxp
bms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAg
ICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgi
KVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0
UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk0LWV4cGVjdGVkLnN2
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0
aW9uLTk5NC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4
Mjc3NDJmZjgwN2M4YWZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5NC1leHBlY3RlZC5zdmcKQEAg
LTAsMCArMSwzOSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0
aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVk
IiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4K
KyAgICA8dGV4dCB4PSIxMDAiIHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0Pjwh
W0NEQVRBWworICAgIGZ1bmN0aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4
dCIpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJ5IiwgeSk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRl
eHRDb250ZW50ID0gczsKKyAgICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFy
IHMgPSAiYS5iLmMuZC5lLiI7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dCIpWzBdOworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZh
ciBhZHYgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlm
ICh4ICsgYWR2IC8gMiA8IDUwKSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDAp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRleHQiKVtzLmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsK
KyAgICByYW5nZS5zZXRFbmQobGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLTk5NC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZm
MmY1MDA5Yjc1YzRkYTZiYzBkYjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTQuc3ZnCkBAIC0w
LDAgKzEsMTUgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGgg
aWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIg
c3Ryb2tlLXdpZHRoPSIxIi8+CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+
PHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+Cisg
IDxzY3JpcHQ+CisgICAgdmFyIHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHRQYXRoIilbMF07CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5n
ZS5zZXRFbmQodGV4dFBhdGguZmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5
NS1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3Rl
eHRwYXRoLXNlbGVjdGlvbi05OTUtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTcz
YzBjNmI1NWQwZDM0ODI3NzQyZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUtZXhw
ZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25l
IiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4
IG1vbm9zcGFjZSI+CisgICAgPHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4K
KyAgPHNjcmlwdD48IVtDREFUQVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAg
ICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInRleHQiKTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgieSIsIHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIp
OworICAgICAgZS50ZXh0Q29udGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAg
IH0KKworICAgIHZhciBzID0gImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50
Tm9kZTsKKyAgICB2YXIgYWR2ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBh
ZHY7CisgICAgICBpZiAoeCArIGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAw
ICsgeCwgMTAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUw
ICsgeCwgOTApOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmly
c3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90
ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTUuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk1LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4
YTlkODQ1YTExYjJmZjJmNTAwOWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24t
OTk1LnN2ZwpAQCAtMCwwICsxLDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBw
eCBtb25vc3BhY2UiPjx0ZXh0UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBh
dGg+PC90ZXh0PgorICA8c2NyaXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwg
MSk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRo
LXNlbGVjdGlvbi05OTYtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZDA2YWQwMjE3M2MwYzZiNTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxl
Y3Rpb24tOTk2LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIw
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHls
ZT0iZm9udDogMzBweCBtb25vc3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90
ZXh0PgorICA8L2c+CisgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgs
IHksIHIpIHsKKyAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIs
IHgpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRl
KCJyb3RhdGUiLCByKTsKKyAgICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRD
aGlsZChlKTsKKyAgICB9CisKKyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcg
PSB0ZXh0LnBhcmVudE5vZGU7CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsIDEpOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAg
dmFyIHggPSBpICogYWR2OworICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAg
cHV0KHNbaV0sIDEwMCArIHgsIDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQo
c1tpXSwgMTUwLCA1MCArIHgsIDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJz
dENoaWxkLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICBdXT48L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk2LnN2ZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ni5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU5OGE5ZDg0NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBh
dGgtc2VsZWN0aW9uLTk5Ni5zdmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5
bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5j
LmQuZS48L3RleHRQYXRoPjwvdGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRo
LmZpcnN0Q2hpbGQsIDEpOworICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3Njcmlw
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk3LWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGQwNmFkMDIxNzNjMGM2YjU1ZDBkMzQ4Mjc3NDJmZjgwN2M4YWZjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
dGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzOSBAQAorPCEt
LQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
KyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwor
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8cGF0aCBpZD0icCIgZD0iTSAxMDAs
MTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEi
Lz4KKyAgPGcgc3R5bGU9ImZvbnQ6IDMwcHggbW9ub3NwYWNlIj4KKyAgICA8dGV4dCB4PSIxMDAi
IHk9IjEwMCI+YTwvdGV4dD4KKyAgPC9nPgorICA8c2NyaXB0PjwhW0NEQVRBWworICAgIGZ1bmN0
aW9uIHB1dChzLCB4LCB5LCByKSB7CisgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAidGV4dCIpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoIngiLCB4KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJ5IiwgeSk7CisgICAgICBl
LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgcik7CisgICAgICBlLnRleHRDb250ZW50ID0gczsKKyAg
ICAgIGcuYXBwZW5kQ2hpbGQoZSk7CisgICAgfQorCisgICAgdmFyIHMgPSAiYS5iLmMuZC5lLiI7
CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBd
OworICAgIHZhciBnID0gdGV4dC5wYXJlbnROb2RlOworICAgIHZhciBhZHYgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgwLCAxKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciB4ID0gaSAqIGFkdjsKKyAgICAgIGlmICh4ICsgYWR2IC8gMiA8IDUw
KSB7CisgICAgICAgIHB1dChzW2ldLCAxMDAgKyB4LCAxMDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcHV0KHNbaV0sIDE1MCwgNTAgKyB4LCA5MCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGxhc3RUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHQiKVtz
Lmxlbmd0aCAtIDFdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQo
bGFzdFRleHQuZmlyc3RDaGlsZCwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5Ny5zdmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi05OTcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOThhOWQ4NDVhMTFiMmZmMmY1MDA5Yjc1YzRkYTZiYzBk
YjI0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTcuc3ZnCkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0K
KyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKy0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9InAiIGQ9Ik0gMTAwLDEw
MCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIi8+
CisgIDx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+PHRleHRQYXRoIHhsaW5rOmhy
ZWY9IiNwIj5hLmIuYy5kLmUuPC90ZXh0UGF0aD48L3RleHQ+CisgIDxzY3JpcHQ+CisgICAgdmFy
IHRleHRQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIilbMF07
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydCh0ZXh0UGF0aC5maXJzdENoaWxkLCAxKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dFBhdGgu
Zmlyc3RDaGlsZCwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
KTsKKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OC1leHBlY3RlZC5zdmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05
OTgtZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMDZhZDAyMTczYzBjNmI1NWQwZDM0ODI3NzQy
ZmY4MDdjOGFmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMzkgQEAKKzwhLS0KKyAgICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKy0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHBhdGggaWQ9
InAiIGQ9Ik0gMTAwLDEwMCBoIDUwIHYgMjAwIiBmaWxsPSJub25lIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIi8+CisgIDxnIHN0eWxlPSJmb250OiAzMHB4IG1vbm9zcGFjZSI+CisgICAg
PHRleHQgeD0iMTAwIiB5PSIxMDAiPmE8L3RleHQ+CisgIDwvZz4KKyAgPHNjcmlwdD48IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBwdXQocywgeCwgeSwgcikgeworICAgICAgdmFyIGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInRleHQiKTsK
KyAgICAgIGUuc2V0QXR0cmlidXRlKCJ4IiwgeCk7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieSIs
IHkpOworICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvdGF0ZSIsIHIpOworICAgICAgZS50ZXh0Q29u
dGVudCA9IHM7CisgICAgICBnLmFwcGVuZENoaWxkKGUpOworICAgIH0KKworICAgIHZhciBzID0g
ImEuYi5jLmQuZS4iOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRleHQiKVswXTsKKyAgICB2YXIgZyA9IHRleHQucGFyZW50Tm9kZTsKKyAgICB2YXIgYWR2
ID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwgMSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgeCA9IGkgKiBhZHY7CisgICAgICBpZiAoeCAr
IGFkdiAvIDIgPCA1MCkgeworICAgICAgICBwdXQoc1tpXSwgMTAwICsgeCwgMTAwLCAwKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1dChzW2ldLCAxNTAsIDUwICsgeCwgOTApOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBsYXN0VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0Iilbcy5sZW5ndGggLSAxXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHQuZmlyc3RDaGlsZCwgMSk7CisgICAg
cmFuZ2Uuc2V0RW5kKGxhc3RUZXh0LmZpcnN0Q2hpbGQsIDApOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgIF1dPjwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVj
dGlvbi05OTguc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0
cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk4YTlkODQ1YTExYjJmZjJmNTAw
OWI3NWM0ZGE2YmMwZGIyNDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk4LnN2ZwpAQCAtMCwwICsx
LDE1IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxwYXRoIGlkPSJw
IiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMSIvPgorICA8dGV4dCBzdHlsZT0iZm9udDogMzBweCBtb25vc3BhY2UiPjx0ZXh0
UGF0aCB4bGluazpocmVmPSIjcCI+YS5iLmMuZC5lLjwvdGV4dFBhdGg+PC90ZXh0PgorICA8c2Ny
aXB0PgorICAgIHZhciB0ZXh0UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
ZXh0UGF0aCIpWzBdOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgcmFuZ2Uuc2V0U3RhcnQodGV4dFBhdGguZmlyc3RDaGlsZCwgMSk7CisgICAgcmFuZ2Uuc2V0
RW5kKHRleHRQYXRoLmZpcnN0Q2hpbGQsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi05OTktZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0
aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDA2YWQwMjE3M2MwYzZi
NTVkMGQzNDgyNzc0MmZmODA3YzhhZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LWV4cGVjdGVk
LnN2ZwpAQCAtMCwwICsxLDM5IEBACis8IS0tCisgICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvCistLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisgIDxwYXRoIGlkPSJwIiBkPSJNIDEwMCwxMDAgaCA1MCB2IDIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIvPgorICA8ZyBzdHlsZT0iZm9udDogMzBweCBtb25v
c3BhY2UiPgorICAgIDx0ZXh0IHg9IjEwMCIgeT0iMTAwIj5hPC90ZXh0PgorICA8L2c+CisgIDxz
Y3JpcHQ+PCFbQ0RBVEFbCisgICAgZnVuY3Rpb24gcHV0KHMsIHgsIHksIHIpIHsKKyAgICAgIHZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsICJ0ZXh0Iik7CisgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIHgpOworICAgICAgZS5zZXRB
dHRyaWJ1dGUoInkiLCB5KTsKKyAgICAgIGUuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCByKTsKKyAg
ICAgIGUudGV4dENvbnRlbnQgPSBzOworICAgICAgZy5hcHBlbmRDaGlsZChlKTsKKyAgICB9CisK
KyAgICB2YXIgcyA9ICJhLmIuYy5kLmUuIjsKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IilbMF07CisgICAgdmFyIGcgPSB0ZXh0LnBhcmVudE5vZGU7
CisgICAgdmFyIGFkdiA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIDEpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHggPSBpICogYWR2Owor
ICAgICAgaWYgKHggKyBhZHYgLyAyIDwgNTApIHsKKyAgICAgICAgcHV0KHNbaV0sIDEwMCArIHgs
IDEwMCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwdXQoc1tpXSwgMTUwLCA1MCArIHgs
IDkwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbGFzdFRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgidGV4dCIpW3MubGVuZ3RoIC0gMV07CisgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0LmZpcnN0Q2hp
bGQsIDEpOworICAgIHJhbmdlLnNldEVuZChsYXN0VGV4dC5maXJzdENoaWxkLCAwKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICBdXT48L3NjcmlwdD4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90
ZXh0cGF0aC1zZWxlY3Rpb24tOTk5LnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
c3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5OGE5ZDg0
NWExMWIyZmYyZjUwMDliNzVjNGRhNmJjMGRiMjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLTk5OS5z
dmcKQEAgLTAsMCArMSwxNSBAQAorPCEtLQorICAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLworLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgor
ICA8cGF0aCBpZD0icCIgZD0iTSAxMDAsMTAwIGggNTAgdiAyMDAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiLz4KKyAgPHRleHQgc3R5bGU9ImZvbnQ6IDMwcHggbW9u
b3NwYWNlIj48dGV4dFBhdGggeGxpbms6aHJlZj0iI3AiPmEuYi5jLmQuZS48L3RleHRQYXRoPjwv
dGV4dD4KKyAgPHNjcmlwdD4KKyAgICB2YXIgdGV4dFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dFBhdGgiKVswXTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHRleHRQYXRoLmZpcnN0Q2hpbGQsIDEpOwor
ICAgIHJhbmdlLnNldEVuZCh0ZXh0UGF0aC5maXJzdENoaWxkLCA5KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ2MWY3MGE1
MTQ4MDE2OTg3YzlkNjY1YTkwODUxNDBmYWZiMTdmNGIuLjIyMmNjZTc2NzI3ZjY3MmUwY2JkZmQ3
NGU4ZmNkNDM5NzY4NDczMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEzMzIsNyArMTMzMiw2IEBAIHdlYmtpdC5vcmcvYi8xOTkwNzEg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9jc3MvdXNlci1zZWxlY3Qtbm9uZS5odG1s
IFsKIAogd2Via2l0Lm9yZy9iLzE5MDg4MiBbIERlYnVnIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25l
LWFuaW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxl
YXNlIF0gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24uc3ZnIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTkxOTYgWyBSZWxlYXNlIF0g
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zZWxlY3RTdWJTdHJpbmctMi5zdmcgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTk5MjEzIFsgUmVsZWFzZSBdIGltcG9y
dGVkL2JsaW5rL2VkaXRpbmcvc2VsZWN0aW9uL2RlbGV0ZUZyb21Eb2N1bWVudC1jcmFzaC5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>381689</attachid>
            <date>2019-10-23 10:16:35 -0700</date>
            <delta_ts>2019-10-23 10:16:35 -0700</delta_ts>
            <desc>actual result</desc>
            <filename>textpath-selection-35-actual.png</filename>
            <type>image/png</type>
            <size>46983</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAABkAAAASwCAYAAACjAYaXAAAAKXRFWHRjaGVja3N1bQAxMjVjMzRj
ZjljMThhYWJkYWI1MzkwYWM5MTY5MGIzZHPWLDwAAAABc1JHQgCuzhzpAAAARGVYSWZNTQAqAAAA
CAABh2kABAAAAAEAAAAaAAAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAZAoAMABAAAAAEAAASw
AAAAAJuI7H4AAEAASURBVHgB7N17vFVlnT/w7zkc7nJAvIEi3lDRynvaaF7GG9pVbQwbZ0w07VWp
o+PPLjjmVGblmJWZJWWadr9MNlY6ZpOU2SiV91EEEREFRQEBAeFcfnttA8/e+2zOPocDnPXs93q9
duz1rGc9+/m+nxV/8HGt1dBe2MJGgAABAgQIECBAgAABAgQIECBAgAABAgQIEEhIoDGhWpRCgAAB
AgQIECBAgAABAgQIECBAgAABAgQIECgKCEBcCAQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ
5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQI
JCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQI
ECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQI
ECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQI
ECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQI
ECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQI
ECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAA
xDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAAB
AgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAAB
AgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAAB
AgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAAB
AgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAAB
AgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZU
QQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcg
AEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBA
gEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBA
gAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBA
gAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBA
gAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBA
gAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVA
gAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQI
CEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQI
ECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQI
ECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQI
ECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQI
ECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQI
ECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAElu
SRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEBy
AgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAAB
AgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAAB
AgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAAB
AgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAAB
AgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAAB
AgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBc
AwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBA
gIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBA
gAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBA
gAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBA
gAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBA
gAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVE
gAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ
5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQI
JCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQI
ECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQI
ECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQI
ECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQI
ECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQI
ECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAA
xDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAAB
AgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAAB
AgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAAB
AgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAAB
AgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAAB
AgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZU
QQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcg
AEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBA
gEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBA
gAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBA
gAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBA
gAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBA
gAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVA
gAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQI
CEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQI
ECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQI
ECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBAgAABAgQI
ECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVEgAABAgQI
ECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQI
ECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAElu
SRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEBy
AgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAAB
AgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAAB
AgQIECBAgEByAk3JVaQgAgkItLdHLF7RFnMXtcaLS1tj+apCQ2EbMqAhthzWL8Zs3i9GDG6MhoYE
ilUCAQIECBAgQIAAAQIECBAgQIAAAQIENoBAQ3th2wDjGpIAgR4KrGppjzkLW2L+y68FH6tbI1r/
9v/SfoXAo3+/14KQUcP7xdiRTTGgSQrSQ2qnESBAgAABAgQIECBAgAABAgQIECCQsIAAJOHFVVr+
BFaubo+/zlkVi15pi9VrUo8qZfQvpCGbD22M/cYOiEH9hSBVmDQTIECAAAECBAgQIECAAAECBAgQ
IFCnAgKQOl14Zfc9gSz8mDp9Zawo/NmdbXAh/Dh890FCkO6g6UuAAAECBAgQIECAAAECBAgQIECA
QPICXoKe/BIrMA8C2WOvsjs/uht+ZLVl5/zl6VcjG8NGgAABAgQIECBAgAABAgQIECBAgAABAq8J
CEBcCQQ2sUD2Fp5nCi87zx571dMtOzd7b4g3+vRU0HkECBAgQIAAAQIECBAgQIAAAQIECKQmIABJ
bUXVkzuBxSvaYt7ili7f+bGuwloK2cn8JW2RjWUjQIAAAQIECBAgQIAAAQIECBAgQIAAgQgBiKuA
wCYWmFu4+2P5qvV/fNXyV9siG8tGgAABAgQIECBAgAABAgQIECBAgAABAgIQ1wCBTS7w4tLWwt0f
6z+NbIxsLBsBAgQIECBAgAABAgQIECBAgAABAgQIRDRBIEBg0wpkd3+0tK3/HSDZGMtXbdpa/DoB
AgQIECBAgAABAgQIECBAgAABAgT6ioBHYPWVlTAPAgQIECBAgAABAgQIECBAgAABAgQIECBAoNcE
BCC9RmkgAj0TGDKgIZoaG3p2coezsjGysWwECBAgQIAAAQIECBAgQIAAAQIECBAg4B0grgECm1xg
y2H9on+/9Z9GNsaWm8k011/SCAQIECBAgAABAgQIECBAgAABAgQIpCDgX0tTWEU15FpgzOb9euXO
jSEDG2PMSK/1yfXFYPIECBAgQIAAAQIECBAgQIAAAQIECPSagACk1ygNRKBnAiMGN8ao4f0Kj8Hq
2fnZWdm5o5obIxvLRoAAAQIECBAgQIAAAQIECBAgQIAAAQIegeUaILDJBRoKr+0YW7hzY+RmPX8O
1uZDG4tjZGPZCBAgQIAAAQIECBAgQIAAAQIECBAgQEAA4hog0CcEBjQ1xH5jB8Tg/t1PMLJz9t9h
YGRj2AgQIECAAAECBAgQIECAAAECBAgQIEDgNYGG9sIGgwCBviGwcnV7/HXOqli4rDVa2tY9p+yx
V9ldI1lwMqgHwcm6R3eUAAECBAgQIECAAAECBAgQIECAAAEC+RYQgOR7/cw+QYFVLe0xZ2FLzF/S
FstfbYuVLRFtba/llI2NDTGo8J7z7IXn2Ts/skdnufMjwYtASQQIECBAgAABAgQIECBAgAABAgQI
rLeAAGS9CQ1AoPcFsvuyFq9oi7mLWuPI/5hX8gPXnDIoti6EH8MKIYh3fpTQ9Mmd465eVjKvBV8e
W7JvhwABAgQIECBAgAABAgQIECBAgACBDSNQ+G/JbQQI9DWBLNjYfEhj8VM+t3Fb+79tuYl9AgQI
ECBAgAABAgQIECBAgAABAgQIlAsU3iJgI0CAAAECBAgQIECAAAECBAgQIECAAAECBAikJSAASWs9
VUOAAAECBAgQIECAAAECBAgQIECAAAECBAgUBAQgLgMCBAgQIECAAAECBAgQIECAAAECBAgQIEAg
OQEBSHJLqiACBAgQIECAAAECBAgQIECAAAECBAgQIEBAAOIaIECAAAECBAgQIECAAAECBAgQIECA
AAECBJITaEquIgURILBJBF544YV46KGHorW1de3vNzQ0xM477xzjxo1b2+YLAQIECBAgQIAAAQIE
CBAgQIAAAQIENoaAAGRjKPsNAokLTJkyJbJPte1rX/taHHTQQdUOaydAgAABAgQIECBAgAABAgQI
ECBAgECvC3gEVq+TGpBA/Qnccsst6yz6qaeeWudxBwkQIECAAAECBAgQIECAAAECBAgQINDbAgKQ
3hY1HoE6FHjjG99Yh1UrmQABAgQIECBAgAABAgQIECBAgACBvizgEVh9eXXMjUBOBD784Q9HU1NT
zJkzJ5YtWxZz587NycxNkwABAgQIECBAgAABAgQIECBAgACBVAUEIKmurLoIbESBHXfcMS6//PK1
v/jmN7852tvb1+5nL0O3ESBAgAABAgQIECBAgAABAgQIECBAYGMKeATWxtT2WwQIECBAgAABAgQI
ECBAgAABAgQIECBAgMBGERCAbBRmP0KAAAECBAgQIECAAAECBAgQIECAAAECBAhsTAEByMbU9lsE
CBAgQIAAAQIECBAgQIAAAQIECBAgQIDARhEQgGwUZj9CgAABAgQIECBAgAABAgQIECBAgAABAgQI
bEwBAcjG1PZbBAgQIECAAAECBAgQIECAAAECBAgQIECAwEYRaNoov+JHCNSJwHPPPRe///3v47HH
HotFixbF4sWLi38uXbo0xowZE7vuuuvaz1577RUDBw6sE5muy2xpaYm2trYYMGBA1531IECAAAEC
BAgQIECAAAECBAgQIECAQBcCApAugBwm0JXAX/7yl7juuuvid7/7XcycObOr7muP77LLLvGVr3wl
3v72t69tq5cvq1atij//+c9x1113xYMPPhgvvvhiLFmyJNrb22PIkCGxxRZbxB577BFvfetb4+CD
D44RI0bUC406CRAgQIAAAQIECBAgQIAAAQIECBDoJQEBSC9BGqb+BJYtWxZnnXVW/PCHP+xR8U8+
+WS84x3viHe/+93x1a9+NbbffvsejZOnk7KA49Zbb41rrrkmFi5c2OnUly9fHtnnmWeeiTvuuKN4
R8jEiRNj0qRJ0dzc3Ok5GgkQIECAAAECBAgQIECAAAECBAgQIFAu4B0g5SL2CdQocM455/Q4/Oj4
E7/4xS/i5JNPLj7+qWN7at9ffvnlOPPMM+PTn/501fCjs5qzu0VuvvnmYlB0zz33dNZFGwECBAgQ
IECAAAECBAgQIECAAAECBCoE3AFSQaKBQG0C2SOcqm1Dhw6NY489NnbbbbfYcccdY8WKFZHd8TFj
xoz47W9/G62trSWn3nvvvfGtb30rzj777JL2VHayuz0++MEPdusRYeW1Z+9ROf/884uff/zHfyw/
bJ8AAQIECBAgQIAAAQIECBAgQIAAAQIlAgKQEg47BGoXmDBhQjz66KNrT+jXr1+87W1vi3/6p38q
Ptoqe5dFZ9sjjzwS5513XvGdIR2Pf+ITn4iTTjopttxyy47NSXy/4YYbKu5wyV52/sY3vrH4Uvhx
48bF2LFjY968ecWQKAuKMqfsUVgdt+wl6VdddVUMGjSoaNXxmO8ECBAgQIAAAQIECBAgQIAAAQIE
CBDoKCAA6ajhO4FuCGSBRUNDQzEEOfzww+Of//mfY7vttutyhOwf/e+888448MADI3uB+potu0vi
+9//fjEcWdOWyp9ZcNFx22effeKTn/xkMfTo2N7x+0svvRSXX355TJ06tWNz8fsVV1wRO+20U+y7
774VxzQQIECAAAECBAgQIECAAAECBAgQIEAgExCAuA4I9FAgu1Pjyiuv7NHZjY2NxReBH3zwwZG9
GHzN9sQTT6z5muSf2V0f5557bmQvNc8M1rVtscUW8cUvfjFuv/32+MIXvhDZI7DWbC0tLXHppZfG
f/7nf0ZTk7/G1rj4kwABAgQIECBAgAABAgQIECBAgACB1wXW/S+Qr/fzjQCBXhZ4y1veUnxHSMdh
s0c/pbxl7zh53/ve12X40dHguOOOi4svvrhjU/H7c889Fz//+c8r2jUQIECAAAECBAgQIECAAAEC
BAgQIEAgExCAuA4IbEKBXXbZpeTXU74DZPz48cXHhJUUXOPO0UcfHUceeWRF7xtvvLGiTQMBAgQI
ECBAgAABAgQIECBAgAABAgQyAc+OcR0Q6CWB7IXd06dPj2eeeSbmzp279s/nn38+sheijxgxovjJ
Qo/99tsv9t5778he/t1xmzNnTmSPd0rtsU7Z466yd35kL4rv6fbxj388pk2bVvIorMw2C4122223
ng7rPAIECBAgQIAAAQIECBAgQIAAAQIEEhUQgCS6sMraeAJZ2PHVr341pkyZEosXL675h7NQYOjQ
oSX9s5eFpxiAjB07dr1DipEjR8YBBxwQv/vd70rM7rnnnvUeu2RAOwQIECBAgAABAgQIECBAgAAB
AgQIJCHgEVhJLKMiNoXAI488EqeeemrstNNOccUVV3Qr/Mjmm4UdHV/svSlq2Fi/Wf6or57+bvkd
M9k4Tz75ZE+Hcx4BAgQIECBAgAABAgQIECBAgAABAgkLuAMk4cVV2oYTuPXWW2PixImxYsWKDfcj
CY3cWXDRk/I6G2fhwoU9Gco5BAgQIECAAAECBAgQIECAAAECBAgkLiAASXyBldf7AlOnTo0TTzwx
WltbKwbP3nFxzDHHxAknnBBjxoyJUaNGFT/Dhw+P7B/qFyxYENl7Pv7whz9ENs4DDzxQvBOkYqDE
GjKL3ti23377imEWLVpU0aaBAAECBAgQIECAAAECBAgQIECAAAECAhDXAIFuCGQvOj/jjDMqwo8B
AwbEv//7v8fpp58eo0eP7nTEzTbbLLJ3Yey///7FACXrdMkll8Rll13Waf+UGufNm9cr5cyfP79i
nMGDB1e0aSBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAoBsCP/7xj2PWrFklZwwbNixuueWWOPLI
I0vaa9nJXoReD1tvvaejs3G22GKLeiBUIwECBAgQIECAAAECBAgQIECAAAEC3RSoj3997SaK7gSq
CfzoRz+qOPSDH/ygR+FHxUAJN3QWXPSk3M7GyR4zZiNAgAABAgQIECBAgAABAgQIECBAgEC5gDtA
ykXsE1iHwEMPPVRyNLv749hjjy1p687O008/3Z3uPe6bPbrrhhtuiGnTpsXs2bOL4+ywww7Fx3FN
mjQpsjo25Jb95ty5c4vvRenp77z66qtx//33V5x+0EEHVbRpIECAAAECBAgQIECAAAECBAgQIECA
gDtAXAMEahRoa2uL559/vqT3IYccEv379y9pq3Vn2bJl8bOf/azW7j3u93//93/xnve8pxiAPPLI
I5H9bvZ59NFH46abboqTTjqp+DL2Hv9ADSe2tLTEZz/72Rp6Vu/yjW98o8J/4MCBccABB1Q/yREC
BAgQIECAAAECBAgQIECAAAECBOpWQABSt0uv8O4KNDQ0RPYi847bnDlzOu7W/D0LUz72sY8Vg4ia
T+pBx+zOj8mTJ8eCBQuqnr1o0aK4+OKLY8mSJVX79MaB7O6T7F0pPdmyEOd73/texanveMc7IgtB
bAQIECBAgAABAgQIECBAgAABAgQIECgXEICUi9gnUEUgC0D23nvvkqOPPfZYPPHEEyVtXe0sXbo0
3vWud8W1117bVdf1Pv7LX/6y+OiprgbK7mzJ+m7o7Utf+lJMnTq1Wz+T+f7bv/1bZKFRx23QoEFx
1llndWzynQABAgQIECBAgAABAgQIECBAgAABAmsFBCBrKXwh0LXAvvvuW9Kpvb29GGYsXry4pL2z
nVWrVhUfOZU9sulXv/pVZ116ve3xxx+veczp06fX3LenHV955ZW48MIL45JLLunyjpPVq1fHdddd
F6eddlp0dqfN2WefHVtuuWVPp+I8AgQIECBAgAABAgQIECBAgAABAgQSF/AS9MQXWHm9K/D3f//3
8ZWvfKVk0Cw42GOPPYqPkXr/+99f8kLxLBiZNWtW/PrXv46vfe1rMX/+/JJzO9vJXhg+ePDgGD58
ePHTWZ9a215++eVau0Z2Z8r6bNkdGmveL9LVOLfddlvce++98da3vjXGjRtX/GQvZc98Zs6cGU8+
+WTxeLWXxE+YMKEYjHT1O44TIECAAAECBAgQIECAAAECBAgQIFC/Ag2F/4K9vX7LVzmB7guccsop
8aMf/ajqidtss02MGjUqnnnmmVi4cGHVfk1NTTFx4sRO322x5qStttoq2v/xz2t2i3/efl7pe0hK
DpbtZC8O/9a3vlXW2vnumWeeGR/60Ic6P9hFa/ZYq0996lNV7+rI7tTYeuutI3uXx/pu2R00V199
dQwYMGB9h9oo5x939bKS31nw5bEl+3YIECBAgAABAgQIECBAgAABAgQIENgwAh6BtWFcjZqwQPZY
puxuhWpb9j6NBx98cJ3hx3bbbRd33XVXfO5zn6s2TLF9XS8vX+eJfzt42GGHRWNj1/83z/pkfXu6
3XjjjVXDj2zMLKz48pe/HNtuu21Pf6J43kknnRTXXHNNbsKP9SrWyQQIECBAgAABAgQIECBAgAAB
AgQIrJdA1/8yul7DO5lAegLZo6n+67/+K/bff/9uF5e9uPv8888vBiSHHHJIjBkzJt70pjd1e5xa
T9hzzz3jjDPO6LJ7dvfHG97whi77VeuQPbJrXdvAgQNj5MiRxbtRsrq7u40ePTouu+yymDx5cmR3
ztgIECBAgAABAgQIECBAgAABAgQIECDQlYBHYHUl5Hh9CzQ0VK2/rXDk+sJncuHzYtVerx3YvvDH
ewqf/1f4bPda09r/vavw7YLC54G1La996V/44/Cs/V+eLjly+01HlOx3tZM94+7Xhc/Vhc9LZZ23
KuyfW/gcX/hUr7TspE52/1pou67wub/wyVw6bllckUUwZ3dovKPw/ZbC5y+FT2uH9o5fs3Q2i4Ym
FD4nFj6ZR3H7c+kjwdY099U/PQKrr66MeREgQIAAAQIECBAgQIAAAQIECKQu4D+lTn2F1bfBBLJ/
oD+r8Dml8MnCi8cLn+mFz8zCJ7sfYnThM6bwOarw2bvwqbYdUTiQBQfVtiykWJ8tCzbeXvgcU/hk
UUr2ydqyh3hln7XBQuF7T7f9CidmAUit27GFjtkne0X7I4VPFiCtCWe2KHzPPln4MbzwsREgQIAA
AQIECBAgQIAAAQIECBAgQKAnAgKQnqg5p34E2rP7J9a9DSscPvRvn3X37OHR8+eUntjDOyAGFEbZ
9W+f0gE33V4WcNT8QKzCy89tBAgQIECAAAECBAgQIECAAAECBAgQqFUg+4/YbQQIECBAgAABAgQI
ECBAgAABAgQIECBAgACBpAQEIEktp2IIECBAgAABAgQIECBAgAABAgQIECBAgACBTEAA4jogQIAA
AQIECBAgQIAAAQIECBAgQIAAAQIEkhMQgCS3pAoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBCCu
AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCA5AQFIckuqIAIECBAgQIAAAQIECBAgQIAAAQIECBAg
QEAA4hogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEkhMQgCS3pAoiQIAAAQIECBAgQIAAAQIECBAg
QIAAAQIEBCCuAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCA5AQFIckuqIAIECBAgQIAAAQIECBAg
QIAAAQIECBAgQEAA4hogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEkhMQgCS3pAoiQIAAAQIECBAg
QIAAAQIECBAgQIAAAQIEBCCuAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCA5AQFIckuqIAIECBAg
QIAAAQIECBAgQIAAAQIECBAgQEAA4hogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEkhMQgCS3pAoi
QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBCCuAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCA5AQFI
ckuqIAIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAJAQECBPImMH369Lj77rtjxowZ0dzcHOPHj4/j
jz8+Bg8enLdSzJcAAQIECBAgQIAAAQIECBAgQIAAgQ0kIADZQLCGJUBgwwhcf/31MWXKlGhtbS35
ge9973vxuc99LnbbbbeSdjsECBAgQIAAAQIECBAgQIAAAQIECNSngEdg1ee6q5pALgVuK8z661//
ekX4kRXz9NNPx/nnnx8rVqzIZW0mTYAAAQIECBAgQIAAAQIECBAgQIBA7woIQHrX02gECGwggdWF
ca/uYuwXXnghbrzxxi56OUyAAAECBAgQIECAAAECBAgQIECAQD0ICEDqYZXVSCABgacLNSyooY77
7ruvhl66ECBAgAABAgQIECBAgAABAgQIECCQuoAAJPUVVh+BRASyAKSWbfbs2bV004cAAQIECBAg
QIAAAQIECBAgQIAAgcQFBCCJL7DyCKQi0F5jIW1tbTX21I0AAQIECBAgQIAAAQIECBAgQIAAgZQF
BCApr67aCCQksEONteywQ609axxQNwIECBAgQIAAAQIECBAgQIAAAQIEcikgAMnlspk0gfoTyGKN
LWooe999962hly4ECBAgQIAAAQIECBAgQIAAAQIECKQuIABJfYXVRyARgQGFOs7popbhw4fHmWee
2UUvhwkQIECAAAECBAgQIECAAAECBAgQqAcBAUg9rLIaCSQi8I5CHaeffno0Nlb+1bXVVlvFFVdc
Ec3NzYlUqwwCBAgQIECAAAECBAgQIECAAAECBNZHoGl9TnYuAQIENqZAQ+HHzjnnnDj00ENj6tSp
MXPmzNhss81i/Pjx8e53vzuyO0BsBAgQIECAAAECBAgQIECAAAECBAgQyAQEIK4DAgRyJ7D33ntH
9rERIECAAAECBAgQIECAAAECBAgQIECgmkDlc2Sq9dROgAABAgQIECBAgAABAgQIECBAgAABAgQI
EMiJgAAkJwtlmgQIECBAgAABAgQIECBAgAABAgQIECBAgEDtAgKQ2q30JECAAAECBAgQIECAAAEC
BAgQIECAAAECBHIiIADJyUKZJgECBAgQIECAAAECBAgQIECAAAECBAgQIFC7gACkdis9CRAgQIAA
AQIECBAgQIAAAQIECBAgQIAAgZwICEByslCmSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECNQuIACp
3UpPAgQIECBAgAABAgQIECBAgAABAgQIECBAICcCApCcLJRpEiBAgAABAgQIECBAgAABAgQIECBA
gAABArULCEBqt9KTAAECBAgQIECAAAECBAgQIECAAAECBAgQyImAACQnC2WaBAgQIECAAAECBAgQ
IECAAAECBAgQIECAQO0CApDarfQkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEciIgAMnJQpkmAQIE
CBAgQIAAAQIECBAgQIAAAQIECBAgULuAAKR2Kz0JECBAgAABAgQIECBAgAABAgQIECBAgACBnAg0
5WSepkmAAIFuCbS3t8fSpUvj5Zdfjubm5uKnoaGhW2PoTIAAAQIECBAgQIAAAQIECBAgQIBAfgUE
IPldOzMnQKCDQEtLS0ybNi3+8Ic/xJ/+9KeYN29eZG1rtqamphg1alT83d/9XRx66KFx4IEHRtZm
I0CAAAECBAgQIECAAAECBAgQIEAgTQH/+pfmuqqKQF0J/Pa3v41rrrkmnnnmmap1Z2HI3Llz4yc/
+Unxs91228VHPvKROOaYY8KdIVXZHCBAgAABAgQIECBAgAABAgQIECCQWwHvAMnt0pk4AQJLliyJ
D33oQ/Gxj31sneFHZ1LPPvtsTJ48Oc4+++xYtGhRZ120ESBAgAABAgQIECBAgAABAgQIECCQYwEB
SI4Xz9QJ1LNAdrfH6aefXnzs1fo43H///fH+978/Zs2atT7DOJcAAQIECBAgQIAAAQIECBAgQIAA
gT4mIADpYwtiOgQIdC3w4osvxllnnRVz5szpsnP//v277PPcc88V7wTJ3htiI0CAAAECBAgQIECA
AAECBAgQIEAgDQHvAEljHVVBoG4Esnd5fPSjH40sBOlsy15y/uY3vzl22WWX4id78fmCBQviiSee
KH6yF6Xfd999FacuXrw4Lrroorj++utj4MCBFcc1ECBAgAABAgQIECBAgAABAgQIECCQLwEBSL7W
y2wJ1L3AlClT4qGHHqpwGDlyZPFdIEcddVTFsa222iqyzyGHHBKTJk2KW2+9Nf7jP/4jli9fXtL3
8ccfL75M/cILLyxpt0OAAAECBAgQIECAAAECBAgQIECAQP4EPAIrf2tmxgTqViB7VfkPfvCDivqP
PPLI+OlPfxqdhR8VnQsN73znO+OHP/xh7LXXXhWHs3Gef/75inYNBAgQIECAAAECBAgQIECAAAEC
BAjkS0AAkq/1MlsCdS1wc6H6FStWlBjssMMOcdlll0Vzc3NJe1c72267bVx55ZUxbNiwkq6rV6+O
b3/72yVtdggQIECAAAECBAgQIECAAAECBAgQyJ+AACR/a2bGBOpW4LayyhsbG+PSSy+NAQMGlB2p
bTd7bNZHPvKRis6/+c1voq2traJdAwECBAgQIECAAAECBAgQIECAAAEC+REQgORnrcyUQF0LPFmo
fkGZwMSJEzt9jFVZt3XunnTSSfGGN7yhpM+SJUvi0UcfLWmzQ4AAAQIECBAgQIAAAQIECBAgQIBA
vgQEIPlaL7MlULcC0zqp/Oijj+6ktXtN2V0kJ598csVJ06Z19osV3TQQIECAAAECBAgQIECAAAEC
BAgQINBHBQQgfXRhTIsAgVKBeaW7xb1x48Z10tr9pp133rnipPnz51e0aSBAgAABAgQIECBAgAAB
AgQIECBAID8CApD8rJWZEqhrgUVl1Y8ePTqGDh1a1tqz3R133LHixEWLyn+xoosGAgQIECBAgAAB
AgQIECBAgAABAgT6sIAApA8vjqkRIPC6wJLXvxa/7bTTTmUtPd8dMmRIbLPNNiUDZO8BsREgQIAA
AQIECBAgQIAAAQIECBAgkF8BAUh+187MCdSVwIiyapctW1bWsn67w4cPLxlgiy22KNm3Q4AAAQIE
CBAgQIAAAQIECBAgQIBAvgQEIPlaL7MlULcC25ZVPmfOnLKW9dstf+fHmDFj1m9AZxMgQIAAAQIE
CBAgQIAAAQIECBAgsEkFBCCblN+PEyBQq0B5ALJ48eJYunRpraevs182TvkjrwQg6yRzkAABAgQI
ECBAgAABAgQIECBAgECfFxCA9PklMkECBDKB8gAka3v88cezP9Z7u+222yrGEIBUkGggQIAAAQIE
CBAgQIAAAQIECBAgkCsBAUiulstkCdSvwI6F0sv/wrr55pvXG6StrS1+/OMfl4yTvRR9/PjxJW12
CBAgQIAAAQIECBAgQIAAAQIECBDIl0D5vyfma/ZmS4BA3QiMLFR6cFm199xzz3rfBfL1r389Zs+e
XTLy0UcfHVkIYiNAgAABAgQIECBAgAABAgQIECBAIL8CApD8rp2ZE6g7gZM6qfhb3/pWJ621Nf36
17+OG264oaLzCSecUNGmgQABAgQIECBAgAABAgQIECBAgACBfAkIQPK1XmZLoK4F3lqofuutty4x
uOuuu+LOO+8saetqp6WlJa666qr45Cc/WdF15513jr322quiXQMBAgQIECBAgAABAgQIECBAgAAB
AvkSEIDka73MlkBdC2R/YXV2d8ZnP/vZeOGFF2qymTFjRkyaNCm+//3vd9r/qKOO6rRdIwECBAgQ
IECAAAECBAgQIECAAAEC+RIQgORrvcyWQN0LnHLKKTFyZPZGkNe3pUuXxqc+9alob29/vbGTb9k7
Q0477bR47LHHOjn6WtM3v/nNOO+886oed4AAAQIECBAgQIAAAQIECBAgQIAAgXwICEDysU5mSYDA
3wSam5vjwgsvrPC499574+GHH65o79hw4403xurVqzs2dfo9C0qeeeaZTo9pJECAAAECBAgQIECA
AAECBAgQIEAgHwICkHysk1kSINBBYMKECTFx4sQOLa99ffbZZyvaetLQ0NDQk9OcQ4AAAQIECBAg
QIAAAQIECBAgQIBAHxIQgPShxTAVAgRqF8juAskeZ9XY+NpfY9nL0Q8//PB1DvAP//APsdlmm62z
T3YwC1i23377LvvpQIAAAQIECBAgQIAAAQIECBAgQIBA3xVo6rtTMzMCBAhUF8iCj+xdHe9973tj
7ty5se+++0a/fv2qn1A4cuyxx8YRRxwR2YvQW1tbS/pmd30MGTIkNt9884p3jJR0tEOAAAECBAgQ
IECAAAECBAgQIECAQC4EBCC5WCaTJECgmsCoUaMi+9S6DRgwIN7whjfU2l0/AgQIECBAgAABAgQI
ECBAgAABAgRyKuARWDldONMmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqgsIQKrbOEKAAAECBAgQ
IECAAAECBAgQIECAAAECBAjkVEAAktOFM20CBAgQIECAAAECBAgQIECAAAECBAgQIECguoAApLqN
IwQIECBAgAABAgQIECBAgAABAgQIECBAgEBOBQQgOV040yZAgAABAgQIECBAgAABAgQIECBAgAAB
AgSqCwhAqts4QoAAAQIECBAgQIAAAQIECBAgQIAAAQIECORUQACS04UzbQIECBAgQIAAAQIECBAg
QIAAAQIECBAgQKC6gACkuo0jBAgQIECAAAECBAgQIECAAAECBAgQIECAQE4FBCA5XTjTJkCAAAEC
BAgQIECAAAECBAgQIECAAAECBKoLCECq2zhCgAABAgQIECBAgAABAgQIECBAgAABAgQI5FRAAJLT
hTNtAgQIECBAgAABAgQIECBAgAABAgQIECBAoLqAAKS6jSMECBAgQIAAAQIECBAgQIAAAQIECBAg
QIBATgUEIDldONMmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqgsIQKrbOEKAAAECBAgQIECAAAEC
BAgQIECAAAECBAjkVEAAktOFM20CBAgQIECAAAECBAgQIECAAAECBAgQIECgukBT9UOOECBAoG8K
PPHEE3H33XfHzJkzo7m5OcaPHx/HHXdcDBo0qG9O2KwIECBAgAABAgQIECBAgAABAgQIENjoAgKQ
jU7uBwkQWB+Bb3/723HddddFa2tryTDf/e534/LLL4/ddtutpN0OAQIECBAgQIAAAQIECBAgQIAA
AQL1KeARWPW57qomkEuB2wuzvvbaayvCj6yY2bNnxwUXXBArVqzIZW0mTYAAAQIECBAgQIAAAQIE
CBAgQIBA7woIQHrX02gECGwggdWFca/uYuznn38+vvOd73TRy2ECBAgQIECAAAECBAgQIECAAAEC
BOpBQABSD6usRgIJCDxdqOGFGuq49957a+ilCwECBAgQIECAAAECBAgQIECAAAECqQsIQFJfYfUR
SEQgC0Bq2bJHYdkIECBAgAABAgQIECBAgAABAgQIECAgAHENECCQC4H2GmfZ1tZWY0/dCBAgQIAA
AQIECBAgQIAAAQIECBBIWUAAkvLqqo1AQgI71FjLDjvU2rPGAXUjQIAAAQIECBAgQIAAAQIECBAg
QCCXAgKQXC6bSROoP4Es1hhZQ9n77LNPDb10IUCAAAECBAgQIECAAAECBAgQIEAgdQEBSOorrD4C
iQgMKNRxThe1NDc3xwc+8IEuejlMgAABAgQIECBAgAABAgQIECBAgEA9CAhA6mGV1UggEYF3Fuo4
7bTToqGhoaKiLbfcMq644orIQhAbAQIECBAgQIAAAQIECBAgQIAAAQIEmhAQIEAgLwJZ7HHeeefF
YYcdFlOnTo0ZM2bEsGHDYvfdd48TTjghRowYkZdSzJMAAQIECBAgQIAAAQIECBAgQIAAgQ0sIADZ
wMCGJ0Cg9wWy93x410fvuxqRAAECBAgQIECAAAECBAgQIECAQEoCHoGV0mqqhQABAgQIECBAgAAB
AgQIECBAgAABAgQIECgKCEBcCAQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ5JZUQQQIECBA
gAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEluSRVE
gAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ
5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQIECBAgAABAgQI
JCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEBcAwQIECBAgAABAgQIECBAgAABAgQI
ECBAgEByAgKQ5JZUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxDVAgAABAgQIECBAgAABAgQI
ECBAgAABAgQIJCcgAEluSRVEgAABAgQIECBAgAABAgQIECBAgAABAgQINCEgQIBASgKtra3x9NNP
x8KFC4ufrLaRI0cWP2PHjo2mJn/tpbTeaiFAgAABAgQIECBAgAABAgQIECBQTcC/BFaT0U6AQG4E
stDj9ttvj9/97ncxbdq0eOWVVzqd+5AhQ+LAAw+Mww47LI4//vjo379/p/00EiBAgAABAgQIECBA
gAABAgQIECCQfwEBSP7XUAUE6lrgV7/6VUyZMiWeffbZLh2WL18ed911V/HzzW9+M84666x45zvf
GQ0NDV2eqwMBAgQIECBAgAABAgQIECBAgAABAvkSEIDka73MlgCBvwmsWLEiPvOZz8Qdd9zRI5N5
8+bFpz/96WIYctlll0V2d4iNAAECBAgQIECAAAECBAgQIECAAIF0BLwEPZ21VAmBuhFYsmRJTJo0
qcfhR0eo3//+93H66afHCy+80LHZdwIECBAgQIAAAQIECBAgQIAAAQIEci4gAMn5Apo+gXoTWLVq
Vfzrv/5rzJw5c52lDx06NPbaa684+OCDY/To0et8zNWsWbPiggsuiJUrV65zTAcJECBAgAABAgQI
ECBAgAABAgQIEMiPgEdg5WetzJQAgYLAF7/4xXjggQc6tdh6663jnHPOiX322aci9MgemTV79uz4
5S9/GT/5yU+ira2tZIzp06fHpZdeGl/4whdK2u0QIECAAAECBAgQIECAAAECBAgQIJBPAXeA5HPd
zJpAXQpk93z8/Oc/77T27GXmP/rRj+Jtb3tbbLvtthV3fAwePDj22GOPuOiii+LGG2+M8ePHV4zz
29/+Nv70pz9VtGsgQIAAAQIECBAgQIAAAQIECBAgQCB/AgKQ/K2ZGROoW4FrC5WX37mRYXziE58o
3r0xbNiwmmz23HPPuOmmm+LII4+s6H/NNddEe3t7RbsGAgQIECBAgAABAgQIECBAgAABAgTyJSAA
ydd6mS2BuhVYVqj8nk6qf8tb3hLvec97Ojmy7qbGxsaYPHlyjBw5sqRj9iis+++/v6TNDgECBAgQ
IECAAAECBAgQIECAAAEC+RMQgORvzcyYQF0KZOFHS1nlQ4YMiYsvvristfbdESNGFEOQ8jP++Mc/
ljfZJ0CAAAECBAgQIECAAAECBAgQIEAgZwICkJwtmOkSqFeBxzsp/IQTTii+7LyTQzU3HXHEEbHb
bruV9PcekBIOOwQIECBAgAABAgQIECBAgAABAgRyKSAAyeWymTSB+hNY2EnJ5cFFJ11qatp1111L
+s2dO7dk3w4BAgQIECBAgAABAgQIECBAgAABAvkTEIDkb83MmEBdCizupOpx48Z10tr9pvJxli9f
Hq+++mr3B3IGAQIECBAgQIAAAQIECBAgQIAAAQJ9RkAA0meWwkQIEFiXwLCyg9lLzHfaaaey1p7t
lgcg2Sgvv/xyzwZzFgECBAgQIECAAAECBAgQIECAAAECfUJAANInlsEkCBDoSmCrsg5tbW29dpfG
ypUry0aPGD58eEWbBgIECBAgQIAAAQIECBAgQIAAAQIE8iMgAMnPWpkpgboWGNVJ9TNnzuyktftN
5eMMHTo0Bg4c2P2BnEGAAAECBAgQIECAAAECBAgQIECAQJ8REID0maUwEQIE1iXw1k4OPvHEE520
dr9pxowZJSdtt912Jft2CBAgQIAAAQIECBAgQIAAAQIECBDIn4AAJH9rZsYE6lJg20LVe5ZV/tBD
D5W1dH83e5TWY489VnLioYceWrLf2U4WmvziF7+IpUuXdnZYGwECBAgQIECAAAECBAgQIECAAAEC
m1hAALKJF8DPEyBQu8AJZV1/85vfxLRp08pau7f7ne98J+bNm1dy0hFF/E1EAABAAElEQVRHHFGy
X77z/e9/P973vvfFZz7zmTjxxBOjtbW1vIt9AgQIECBAgAABAgQIECBAgAABAgQ2sYAAZBMvgJ8n
QKB2gSwAGT9+/NoT2tvb41Of+lS88sora9u682XWrFkxZcqUklMOPPDA2GOPPUraynfuvvvutU2L
Fy+OBx98cO2+LwQIECBAgAABAgQIECBAgAABAgQI9A0BAUjfWAezIECgBoHsL6yPf/zj0a9fv7W9
58+fX7wTY+XKlWvbavny0ksvxSWXXBKrV69e272pqSkuuuiitfvVvmShR8dtwYIFHXd9J0CAAAEC
BAgQIECAAAECBAgQIECgDwgIQPrAIpgCAQK1C7zxjW+Mz372s9HY+PpfX3feeWe8973vjfvuu6+m
gW699dY4+eSTY/r06SX9zz///Nhpp51K2jrbWb58eWfN2ggQIECAAAECBAgQIECAAAECBAgQ6EMC
TX1oLqZCgACBdQpkrxuf8de/RnNzc7zrXe+KW265ZW3/5557Lj784Q/HhAkT4uCDD45x48YVw4wB
AwZEFlhkj7t68skn44477oh777137XlrvpxzzjlxyimnrNld55/Zi9NtBAgQIECAAAECBAgQIECA
AAECBAj0bQEBSN9eH7MjQKCDwKmF78+dfXaHlsqv//3f/x3ZJ9uyu0RGjhwZ2eOusveFVNsaGhri
e9/7XvFTrU/H9pdffrnjru8ECBAgQIAAAQIECBAgQIAAAQIECPRBAQFIH1wUUyJAoHOB5zpvrtqa
3anx4osvVj2+5kAWjixatGjNrj8JECBAgAABAgQIECBAgAABAgQIEEhA4PWH6CdQjBIIECCwKQSy
O0hsBAgQIECAAAECBAgQIECAAAECBAj0LQEBSN9aD7MhQCCHAmPHjs3hrE2ZAAECBAgQIECAAAEC
BAgQIECAQNoCHoGV9vqqjkDSAhMnTiy+EH1TFrnjjjvGbrvttimn4LcJECBAgAABAgQIECBAgAAB
AgQIEOhEQADSCYomAgTyIXDqqafGtttum4/JmiUBAgQIECBAgAABAgQIECBAgAABAhtVwCOwNiq3
HyNAYH0EhnQ4efDgwbHNNtt0aPGVAAECBAgQIECAAAECBAgQIECAAAECrwsIQF638I0AgT4ucGSH
+b3pTW+Kfv36dWjxlQABAgQIECBAgAABAgQIECBAgAABAq8LeATW6xa+ESDQxwUmF+b31s9/PpYv
Xx4TJkzo47M1PQIECBAgQIAAAQIECBAgQIAAAQIENqWAAGRT6vttAgS6JTCg0Pvoo4/u1jk6EyBA
gAABAgQIECBAgAABAgQIECBQnwIegVWf665qAgQIECBAgAABAgQIECBAgAABAgQIECCQtIAAJOnl
VRwBAgQIECBAgAABAgQIECBAgAABAgQIEKhPAQFIfa67qgkQIECAAAECBAgQIECAAAECBAgQIECA
QNICApCkl1dxBAgQIECAAAECBAgQIECAAAECBAgQIECgPgUEIPW57qomQIAAAQIECBAgQIAAAQIE
CBAgQIAAAQJJCwhAkl5exREgQIAAAQIECBAgQIAAAQIECBAgQIAAgfoUEIDU57qrmgABAgQIECBA
gAABAgQIECBAgAABAgQIJC0gAEl6eRVHgAABAgQIECBAgAABAgQIECBAgAABAgTqU0AAUp/rrmoC
BAgQIECAAAECBAgQIECAAAECBAgQIJC0gAAk6eVVHAECBAgQIECAAAECBAgQIECAAAECBAgQqE8B
AUh9rruqCRAgQIAAAQIECBAgQIAAAQIECBAgQIBA0gICkKSXV3EECBAgQIAAAQIECBAgQIAAAQIE
CBAgQKA+BZrqs2xVEyCQZ4Enn3wy/vjHP8aMGTOiubk5xo8fH8cee2wMHDgwz2WZOwECBAgQIECA
AAECBAgQIECAAAECvSggAOlFTEMRILDhBW666aa49tpro6WlpeTHbr755vjc5z4Xu+yyS0m7HQIE
CBAgQIAAAQIECBAgQIAAAQIE6lPAI7Dqc91VTSCXAncUZn311VdXhB9ZMbNmzYp/+Zd/iZUrV+ay
NpMmQIAAAQIECBAgQIAAAQIECBAgQKB3BQQgvetpNAIENpDA6sK4X+5i7Pnz50d2h4iNAAECBAgQ
IECAAAECBAgQIECAAAECAhDXAAECuRCYU5jlCzXM9H//939r6KULAQIECBAgQIAAAQIECBAgQIAA
AQKpCwhAUl9h9RFIRODpGut46qmnauypGwECBAgQIECAAAECBAgQIECAAAECKQsIQFJeXbURSEig
tcZaWltr7VnjgLoRIECAAAECBAgQIECAAAECBAgQIJBLAQFILpfNpAnUn8AONZa844471thTNwIE
CBAgQIAAAQIECBAgQIAAAQIEUhYQgKS8umojkJDAjoVaRtZQzz777FNDL10IECBAgAABAgQIECBA
gAABAgQIEEhdQACS+gqrj0AiAgMKdXyki1qam5vjzDPP7KKXwwQIECBAgAABAgQIECBAgAABAgQI
1IOAAKQeVlmNBBIReGehjlNPPTUaGhoqKho5cmR8/vOfj+HDh1cc00CAAAECBAgQIECAAAECBAgQ
IECAQP0JNNVfySomQCCvAllie8EFF8Rhhx0WU6dOjRkzZsSwYcNi9913jxNPPDGyEMRGgAABAgQI
ECBAgAABAgQIECBAgACBTEAA4jogQCB3Avvvv39kHxsBAgQIECBAgAABAgQIECBAgAABAgSqCXgE
VjUZ7QQIECBAgAABAgQIECBAgAABAgQIECBAgEBuBQQguV06EydAgAABAgQIECBAgAABAgQIECBA
gAABAgSqCQhAqsloJ0CAAAECBAgQIECAAAECBAgQIECAAAECBHIrIADJ7dKZOAECBAgQIECAAAEC
BAgQIECAAAECBAgQIFBNQABSTUY7AQIECBAgQIAAAQIECBAgQIAAAQIECBAgkFsBAUhul87ECRAg
QIAAAQIECBAgQIAAAQIECBAgQIAAgWoCApBqMtoJECBAgAABAgQIECBAgAABAgQIECBAgACB3AoI
QHK7dCZOgAABAgQIECBAgAABAgQIECBAgAABAgQIVBMQgFST0U6AAAECBAgQIECAAAECBAgQIECA
AAECBAjkVkAAktulM3ECBAgQIECAAAECBAgQIECAAAECBAgQIECgmoAApJqMdgIECBAgQIAAAQIE
CBAgQIAAAQIECBAgQCC3AgKQ3C6diRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLVBAQg1WS0EyBA
gAABAgQIECBAgAABAgQIECBAgAABArkVEIDkdulMnAABAgQIECBAgAABAgQIECBAgAABAgQIEKgm
0FTtgHYCBAjkSaCtrS0ee+yx+NOf/hQPPvhgvPTSS7Fo0aJYsWJFDB8+PEaOHBmjR4+Ogw46KA4+
+ODYaqut8lSeuRIgQIAAAQIECBAgQIAAAQIECBAg0E0BAUg3wXQnQKBvCWTBxy9/+cuYMmVKzJ8/
v9PJLVu2LJ599tl4+OGH44477ij2OfDAA+Pcc8+NPfbYo9NzNBIgQIAAAQIECBAgQIAAAQIECBAg
kG8BAUi+18/sCdS1wKxZs+KjH/1ozJ49u9sO9913X5x22mlx3HHHxeTJk2Pw4MHdHsMJBAgQIECA
AAECBAgQIECAAAECBAj0XQHvAOm7a2NmBAisQ+Cee+6JSZMm9Sj8WDNse3t73HbbbfGBD3wgFixY
sKbZnwQIECBAgAABAgQIECBAgAABAgQIJCAgAElgEZVAoN4E/vrXv8YFF1wQr7zySq+UPn369GKY
snDhwl4ZzyAECBAgQIAAAQIECBAgQIAAAQIECGx6AQHIpl8DMyBAoBsCL774YnziE5+I1tbWirOy
x1gdcMABccYZZ8SXvvSl2HPPPUv6ZHd67LDDDiVta3ay94dcfPHFkb1TxEaAAAECBAgQIECAAAEC
BAgQIECAQP4FBCD5X0MVEKgrgcsvvzxeeumlipoPO+yw4svQv/GNb8SHP/zhOPTQQ2PQoEEl/SZO
nBg/+9nP4rrrrov999+/5Fi2M23atLj++usr2jUQIECAAAECBAgQIECAAAECBAgQIJA/AQFI/tbM
jAnUrcCMQuW///3vS+ofMGBAXHTRRXHVVVfF8OHDS45V28nCj6997Wtx/PHHV3S5+eabY8mSJRXt
GggQIECAAAECBAgQIECAAAECBAgQyJeAACRf62W2BOpa4MZOqj/nnHMiu7Oju1tTU1N8+tOfjve9
730lpy5fvjx++MMflrTZIUCAAAECBAgQIECAAAECBAgQIEAgfwICkPytmRkTqEuB7I0ffyirfMyY
MXHyySeXtda+29DQUHyZ+tixY0tOyh6TZSNAgAABAgQIECBAgAABAgQIECBAIN8CApB8r5/ZE6gb
gf8rVLq8rNpzzz03+vfvX9bavd3Gxsb44Ac/WHJS9o6RWbNmlbTZIUCAAAECBAgQIECAAAECBAgQ
IEAgXwICkHytl9kSqFuB+8sqHzp0aBx11FFlrT3bPeaYY2LnnXcuOfnPf/5zyb4dAgQIECBAgAAB
AgQIECBAgAABAgTyJSAAydd6mS2BuhV4sazy7bffvqyl57vZXSD77rtvyQDTp08v2bdDgAABAgQI
ECBAgAABAgQIECBAgEC+BAQg+VovsyVQtwKLyyrvzQAkG7r8PSCLF5f/YtkE7BIgQIAAAQIECBAg
QIAAAQIECBAg0KcFBCB9enlMjgCBNQJL1nz525+9HYCUjycAKQO3S4AAAQIECBAgQIAAAQIECBAg
QCBnAgKQnC2Y6RKoV4HmssIHDx5c1rJ+uyNGjCgZYMWKFSX7dggQIECAAAECBAgQIECAAAECBAgQ
yJeAACRf62W2BOpWYFRZ5fPmzStrWb/duXPnlgwwfPjwkn07BAgQIECAAAECBAgQIECAAAECBAjk
S0AAkq/1MlsCdSuwbVnlzz77bFnL+u0+9dRTJQOU3xFSctAOAQIECBAgQIAAAQIECBAgQIAAAQJ9
XkAA0ueXyAQJEMgERpcxlN+xUXa427szZswoOWf06PJfLDlshwABAgQIECBAgAABAgQIECBAgACB
Pi4gAOnjC2R6BAi8JlAeR2R3gMyePbtXeB5//PG45557SsY64IADSvbtECBAgAABAgQIECBAgAAB
AgQIECCQLwEBSL7Wy2wJ1K1A9g6QhrLqb7/99rKWnu1eeeWV0dbWtvbkpqam2Geffdbu+0KAAAEC
BAgQIECAAAECBAgQIECAQP4EBCD5WzMzJlCXAgMKVe9VVnlvBCDf/e5344EHHigZ+cgjj4whQ4aU
tNkhQIAAAQIECBAgQIAAAQIECBAgQCBfAgKQfK2X2RKoa4G3l1WfvQfk4YcfLmutbXfVqlXxmc98
Jr785S+XnNDQ0BCTJk0qabNDgAABAgQIECBAgAABAgQIECBAgED+BAQg+VszMyZQtwJHFyrv379/
Sf0//elPS/a72lm0aFHceuutceaZZ8YvfvGLiu7HHHNM7LrrrhXtGggQIECAAAECBAgQIECAAAEC
BAgQyJdAU76ma7YECNSzQHOh+EMPPTT+53/+Zy3Db37zmzj//PNj8803X9tW7cu5554bTzzxRMn7
Pjr2HTNmTEyePLljk+8ECBAgQIAAAQIECBAgQIAAAQIECORUwB0gOV040yZQrwJve9vbSkrPHmV1
yy23lLSt2cleZt5xe/zxx6uGH0OHDo0vfOELsdlmm3U8xXcCBAgQIECAAAECBAgQIECAAAECBHIq
IADJ6cKZNoF6FTjkkEOiuTm7F+T17c4773x9p8O3Wl9kvsUWW8SUKVNi991373C2rwQIECBAgAAB
AgQIECBAgAABAgQI5FlAAJLn1TN3AnUokL0D5EMf+lBJ5TNnzozVq1eXtGU75UFJRYdCw/777x83
3HCD8KMzHG0ECBAgQIAAAQIECBAgQIAAAQIEciwgAMnx4pk6gXoVOPnkkyO7E2TNdtBBB1W8HD07
9uY3v3lNl4o/s7s9Pv/5z8d1110X2267bcVxDQQIECBAgAABAgQIECBAgAABAgQI5Fug9AH5+a7F
7AkQqCOBL33pS3H33XfHggUL4vjjj++08gkTJsTKlSvj4YcfjpaWlthqq61i1KhRxfBE6NEpmUYC
BAgQIECAAAECBAgQIECAAAECyQgIQJJZSoUQqC+BxsbGOOyww9ZZdNbnxBNPLH7W2dFBAgQIECBA
gAABAgQIECBAgAABAgSSE/AIrOSWVEEECBAgQIAAAQIECBAgQIAAAQIECBAgQICAAMQ1QIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIECCQnIABJbkkVRIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAhAXAME
CBDoZYH29oglK9ti5gstFSM//OzqWLS8LbI+NgIECBAgQIAAAQIECBAgQIAAAQIENpxAQ3th23DD
G5kAAQK9JNDQ8NpAffyvrFUt7TFnYUvMf7k1lq9qj5WFDKSt7bW/ZhsbG2JQU8SQAQ0xani/GDuy
KQY0/a2uXmIyDAECBAgQIECAAAECBAgQIECAAAECrwkIQFwJBAjkQyAHAcjK1e3x1zmrYtErbbG6
dd3Zcv9+DbH50MbYb+yAGNRfCJKPi9AsCRAgQIAAAQIECBAgQIAAAQIE8iQgAMnTapkrgXoW6OMB
SBZ+TJ2+MlYU/uzONrgQfhy++yAhSHfQ9CVAgAABAgQIECBAgAABAgQIECBQg4B3gNSApAsBAgTW
JZA99iq786O74Uc2ZnbOX55+NbIxbAQIECBAgAABAgQIECBAgAABAgQI9J6AAKT3LI1EgEAdCmSv
JHlmUWvxsVc9LT97ZFb23pA+/nqTnpbnPAIECBAgQIAAAQIECBAgQIAAAQKbREAAsknY/SgBAqkI
LF7RFvMWt3T5zo911dvSFjF/SVtkY9kIECBAgAABAgQIECBAgAABAgQIEOgdAQFI7zgahQCBOhWY
W7j7Y/mq9X981fJX2yIby0aAAAECBAgQIECAAAECBAgQIECAQO8ICEB6x9EoBAjUqcCLS1sLd3+s
f/HZGNlYNgIECBAgQIAAAQIECBAgQIAAAQIEekegqXeGMQoBAgTqUyC7+6Olbf3vAMnGWL6qPg1V
TYAAAQIECBAgQIAAAQIECBAgQGBDCLgDZEOoGpMAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYpALu
ANmk/H6cAIGeCDz66KNx2223xUMPPRQjR46M/fbbL9773vfGoEH/n7372bW7vs44/Du2cTD5h1MH
0iqKB5XIADqgyRApl5F5pIopg864A5JL6AVAZwyZcBFUFYQZaaNWatRUTYRUMHb2dlKlVSrW4fVx
+q74sRQpyves7eVnoQz46Bw/nXzcI808c/Pi4XdufPrZo30XyI1rF8f5s/wiQIAAAQIECBAgQIAA
AQIECBAgQOBqBC4enH5dzUf5FAIECDxGgYvfxoGf/PjHx+uvv3588sn//nlRL7300vHmm28eL774
4mNc4g8/+h9+/unxL/9x75H/IvRz/Pjzr18//urbN//wN/G/ECBAgAABAgQIECBAgAABAgQIECDw
hQUEkC9MZoAAgf8XgVMA+fvTb/zDz/nN7969e7z//vvHrVu3Puerrvbplx/fP/7x558cv/j1/Uf6
4DtfvX68+BdPHbef8ZMJHwnSMAECBAgQIECAAAECBAgQIECAAIHfCfg3bf5RIEBghcCnpy3/dtj0
o48+Ot54443hq672+dlb145vnb5z48Yj/L/pefZbX7t2nD/LLwIECBAgQIAAAQIECBAgQIAAAQIE
rkbAv227GkefQoDAYxb46enz/+kSv8c777xzia+6ui85/2Su73zjxvGNr1yPP/T2l689/Izf/ZSv
+HMMEiBAgAABAgQIECBAgAABAgQIECDwewEB5PcW/hsBAsUC5wBymV8ffPDBZb7sSr/m5o2L46+/
c/O49dQX/0vMzzPfu/ul4/wZfhEgQIAAAQIECBAgQIAAAQIECBAgcHUCAsjVWfokAgQeo8Bnl/zs
e/fuXfIrr/bLnj6FjB989+njua9d7sdhnX/s1flrzzPnWb8IECBAgAABAgQIECBAgAABAgQIELha
gRtX+3E+jQABAo9H4LuX/NgXXnjhkl959V92Dhnfv3vz+Nm/3zv+9T/vHx//1/3j01O5uXf/wcPf
7Ma1i+Op00/KeuZLp7835PR3fpx/dJbv/Lj6O/hEAgQIECBAgAABAgQIECBAgAABAmcBAcQ/BwQI
rBA4B5Bvnv7zb8O2r7zyyvAVj/f5HDT+8ptPHX/2lfvHP//ys+MXv/rs+PiT3/6ez9y8OO589frx
7dvXH/6F5/7Oj8d7C59OgAABAgQIECBAgAABAgQIECDwZAtcPDj9erIJ/OkJEFghcKoFf3da9G8+
Z9nbt28fH3744XHnzp3P+SpPBAgQIECAAAECBAgQIECAAAECBAg8CQL+DpAn4cr+jAT+RAR+dPpz
vPbaa8fF//GtE88999zx1ltviR9/Irf2xyBAgAABAgQIECBAgAABAgQIECDwqAK+A+RRBc0TIPDH
Efjv6HH6prV33333ePvtt4/33nvvePbZZ4+XX375ePXVV4/nn3/+j7OL34UAAQIECBAgQIAAAQIE
CBAgQIAAgXoBAaT+RBYkQOChwP8IIEQIECBAgAABAgQIECBAgAABAgQIECAwCfgRWJOQdwIECBAg
QIAAAQIECBAgQIAAAQIECBAgQGCdgACy7mQWJkCAAAECBAgQIECAAAECBAgQIECAAAECBCYBAWQS
8k6AAAECBAgQIECAAAECBAgQIECAAAECBAisExBA1p3MwgQIECBAgAABAgQIECBAgAABAgQIECBA
gMAkIIBMQt4JECBAgAABAgQIECBAgAABAgQIECBAgACBdQICyLqTWZgAAQIECBAgQIAAAQIECBAg
QIAAAQIECBCYBASQScg7AQIECBAgQIAAAQIECBAgQIAAAQIECBAgsE5AAFl3MgsTIECAAAECBAgQ
IECAAAECBAgQIECAAAECk4AAMgl5J0CAAAECBAgQIECAAAECBAgQIECAAAECBNYJCCDrTmZhAgQI
ECBAgAABAgQIECBAgAABAgQIECBAYBIQQCYh7wQIECBAgAABAgQIECBAgAABAgQIECBAgMA6AQFk
3cksTIAAAQIECBAgQIAAAQIECBAgQIAAAQIECEwCAsgk5J0AAQIECBAgQIAAAQIECBAgQIAAAQIE
CBBYJyCArDuZhQkQIECAAAECBAgQIECAAAECBAgQIECAAIFJQACZhLwTIECAAAECBAgQIECAAAEC
BAgQIECAAAEC6wQEkHUnszABAgQIECBAgAABAgQIECBAgAABAgQIECAwCQggk5B3AgQIECBAgAAB
AgQIECBAgAABAgQIECBAYJ2AALLuZBYmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJgEBZBLyToAA
AQIECBAgQIAAAQIECBAgQIAAAQIECKwTEEDWnczCBAgQIECAAAECBAgQIECAAAECBAgQIECAwCQg
gExC3gkQIECAAAECBAgQIECAAAECBAgQIECAAIF1AgLIupNZmAABAgQIECBAgAABAgQIECBAgAAB
AgQIEJgEBJBJyDsBAgQIECBAgAABAgQIECBAgAABAgQIECCwTkAAWXcyCxMgQIAAAQIECBAgQIAA
AQIECBAgQIAAAQKTgAAyCXknQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE1gkIIOtOZmECBAgQIECA
AAECBAgQIECAAAECBAgQIEBgEhBAJiHvBAgQIECAAAECBAgQIECAAAECBAgQIECAwDoBAWTdySxM
gAABAgQIECBAgAABAgQIECBAgAABAgQITAICyCTknQABAgQIECBAgAABAgQIECBAgAABAgQIEFgn
IICsO5mFCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgUlAAJmEvBMgQIAAAQIECBAgQIAAAQIECBAg
QIAAAQLrBASQdSezMAECBAgQIECAAAECBAgQIECAAAECBAgQIDAJCCCTkHcCBAgQIECAAAECBAgQ
IECAAAECBAgQIEBgnYAAsu5kFiZAgAABAgQIECBAgAABAgQIECBAgAABAgQmAQFkEvJOgAABAgQI
ECBAgAABAgQIECBAgAABAgQIrBMQQNadzMIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAJCCATELe
CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgXUCAsi6k1mYAAECBAgQIECAAAECBAgQIECAAAECBAgQ
mAQEkEnIOwECBAgQIECAAAECBAgQIECAAAECBAgQILBOQABZdzILEyBAgAABAgQIECBAgAABAgQI
ECBAgAABApOAADIJeSdAgAABAgQIECBAgAABAgQIECBAgAABAgTWCQgg605mYQIECBAgQIAAAQIE
CBAgQIAAAQIECBAgQGASEEAmIe8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAOgEBZN3JLEyAAAEC
BAgQIECAAAECBAgQIECAAAECBAhMAgLIJOSdAAECBAgQIECAAAECBAgQIECAAAECBAgQWCcggKw7
mYUJECBAgAABAgQIECBAgAABAgQIECBAgACBSUAAmYS8EyBAgAABAgQIECBAgAABAgQIECBAgAAB
AusEBJB1J7MwAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMAkIIJOQdwIECBAgQIAAAQIECBAgQIAA
AQIECBAgQGCdgACy7mQWJkCAAAECBAgQIECAAAECBAgQIECAAAECBCYBAWQS8k6AAAECBAgQIECA
AAECBAgQIECAAAECBAisExBA1p3MwgQIECBAgAABAgQIECBAgAABAgQIECBAgMAkIIBMQt4JECBA
gAABAgQIECBAgAABAgQIECBAgACBdQICyLqTWZgAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYBASQ
Scg7AQIECBAgQIAAAQIECBAgQIAAAQIECBAgsE5AAFl3MgsTIECAAAECBAgQIECAAAECBAgQIECA
AAECk4AAMgl5J0CAAAECBAgQIECAAAECBAgQIECAAAECBNYJCCDrTmZhAgQIECBAgAABAgQIECBA
gAABAgQIECBAYBIQQCYh7wQIECBAgAABAgQIECBAgAABAgQIECBAgMA6AQFk3cksTIAAAQIECBAg
QIAAAQIECBAgQIAAAQIECEwCAsgk5J0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBYJyCArDuZhQkQ
IECAAAECBAgQIECAAAECBAgQIECAAIFJQACZhLwTIECAAAECBAgQIECAAAECBAgQIECAAAEC6wQE
kHUnszABAgQIECBAgAABAgQIECBAgAABAgQIECAwCQggk5B3AgQIECBAgAABAgQIECBAgAABAgQI
ECBAYJ2AALLuZBYmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJgEBZBLyToAAAQIECBAgQIAAAQIE
CBAgQIAAAQIECKwTEEDWnczCBAgQIECAAAECBAgQIECAAAECBAgQIECAwCQggExC3gkQIECAAAEC
BAgQIECAAAECBAgQIECAAIF1AgLIupNZmAABAgQIECBAgAABAgQIECBAgAABAgQIEJgEBJBJyDsB
AgQIECBAgAABAgQIECBAgAABAgQIECCwTkAAWXcyCxMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKT
gAAyCXknQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE1gkIIOtOZmECBAgQIECAAAECBAgQIECAAAEC
BAgQIEBgEhBAJiHvBAgQIECAAAECBAgQIECAAAECBAgQIECAwDoBAWTdySxMgAABAgQIECBAgAAB
AgQIECBAgAABAgQITAICyCTknQABAgQIECBAgAABAgQIECBAgAABAgQIEFgnIICsO5mFCRAgQIAA
AQIECBAgQIAAAQIECBAgQIAAgUlAAJmEvBMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLrBASQdSez
MAECBAgQIECAAAECBAgQIECAAAECBAgQIDAJCCCTkHcCBAgQIECAAAECBAgQIECAAAECBAgQIEBg
nYAAsu5kFiZAgAABAgQIECBAgAABAgQIECBAgAABAgQmAQFkEvJOgAABAgQIECBAgAABAgQIECBA
gAABAgQIrBMQQNadzMIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAJCCATELeCRAgQIAAAQIECBAg
QIAAAQIECBAgQIAAgXUCAsi6k1mYAAECBAgQIECAAAECBAgQIECAAAECBAgQmAQEkEnIOwECBAgQ
IECAAAECBAgQIECAAAECBAgQILBOQABZdzILEyBAgAABAgQIECBAgAABAgQIECBAgAABApOAADIJ
eSdAgAABAgQIECBAgAABAgQIECBAgAABAgTWCQgg605mYQIECBAgQIAAAQIECBAgQIAAAQIECBAg
QGASEEAmIe8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAOgEBZN3JLEyAAAECBAgQIECAAAECBAgQ
IECAAAECBAhMAgLIJOSdAAECBAgQIECAAAECBAgQIECAAAECBAgQWCcggKw7mYUJECBAgAABAgQI
ECBAgAABAgQIECBAgACBSUAAmYS8EyBAgAABAgQIECBAgAABAgQIECBAgAABAusEBJB1J7MwAQIE
CBAgQIAAAQIECBAgQIAAAQIECBAgMAkIIJOQdwIECBAgQIAAAQIECBAgQIAAAQIECBAgQGCdgACy
7mQWJkCAAAECBAgQIECAAAECBAgQIECAAAECBCYBAWQS8k6AAAECBAgQIECAAAECBAgQIECAAAEC
BAisExBA1p3MwgQIECBAgAABAgQIECBAgAABAgQIECBAgMAkIIBMQt4JECBAgAABAgQIECBAgAAB
AgQIECBAgACBdQICyLqTWZgAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYBASQScg7AQIECBAgQIAA
AQIECBAgQIAAAQIECBAgsE5AAFl3MgsTIECAAAECBAgQIECAAAECBAgQIECAAAECk4AAMgl5J0CA
AAECBAgQIECAAAECBAgQIECAAAECBNYJCCDrTmZhAgQIECBAgAABAgQIECBAgAABAgQIECBAYBIQ
QCYh7wQIECBAgAABAgQIECBAgAABAgQIECBAgMA6AQFk3cksTIAAAQIECBAgQIAAAQIECBAgQIAA
AQIECEwCAsgk5J0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBYJyCArDuZhQkQIECAAAECBAgQIECA
AAECBAgQIECAAIFJQACZhLwTIECAAAECBAgQIECAAAECBAgQIECAAAEC6wQEkHUnszABAgQIECBA
gAABAgQIECBAgAABAgQIECAwCQggk5B3AgQIECBAgAABAgQIECBAgAABAgQIECBAYJ2AALLuZBYm
QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJgEBZBLyToAAAQIECBAgQIAAAQIECBAgQIAAAQIECKwT
EEDWnczCBAgQIECAAAECBAgQIECAAAECBAgQIECAwCQggExC3gkQIECAAAECBAgQIECAAAECBAgQ
IECAAIF1AgLIupNZmAABAgQIECBAgAABAgQIECBAgAABAgQIEJgEBJBJyDsBAgQIECBAgAABAgQI
ECBAgAABAgQIECCwTkAAWXcyCxMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKTgAAyCXknQIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIE1gkIIOtOZmECBAgQIECAAAECBAgQIECAAAECBAgQIEBgEhBAJiHv
BAgQIECAAAECBAgQIECAAAECBAgQIECAwDoBAWTdySxMgAABAgQIECBAgAABAgQIECBAgAABAgQI
TAICyCTknQABAgQIECBAgAABAgQIECBAgAABAgQIEFgnIICsO5mFCRAgQIAAAQIECBAgQIAAAQIE
CBAgQIAAgUlAAJmEvBMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLrBASQdSezMAECBAgQIECAAAEC
BAgQIECAAAECBAgQIDAJCCCTkHcCBAgQIECAAAECBAgQIECAAAECBAgQIEBgnYAAsu5kFiZAgAAB
AgQIECBAgAABAgQIECBAgAABAgQmAQFkEvJOgAABAgQIECBAgAABAgQIECBAgAABAgQIrBMQQNad
zMIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAJCCATELeCRAgQIAAAQIECBAgQIAAAQIECBAgQIAA
gXUCAsi6k1mYAAECBAgQIECAAAECBAgQIECAAAECBAgQmAQEkEnIOwECBAgQIECAAAECBAgQIECA
AAECBAgQILBOQABZdzILEyBAgAABAgQIECBAgAABAgQIECBAgAABApOAADIJeSdAgAABAgQIECBA
gAABAgQIECBAgAABAgTWCQgg605mYQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGASEEAmIe8ECBAg
QIAAAQIECBAgQIAAAQIECBAgQIDAOgEBZN3JLEyAAAECBAgQIECAAAECBAgQIECAAAECBAhMAgLI
JOSdAAECBAgQIECAAAECBAgQIECAAAECBAgQWCcggKw7mYUJECBAgAABAgQIECBAgAABAgQIECBA
gACBSUAAmYS8EyBAgAABAgQIECBAgAABAgQIECBAgAABAusEBJB1J7MwAQIECBAgQIAAAQIECBAg
QIAAAQIECBAgMAkIIJOQdwIECBAgQIAAAQIECBAgQIAAAQIECBAgQGCdgACy7mQWJkCAAAECBAgQ
IECAAAECBAgQIECAAAECBCYBAWQS8k6AAAECBAgQIECAAAECBAgQIECAAAECBAisExBA1p3MwgQI
ECBAgAABAgQIECBAgAABAgQIECBAgMAkIIBMQt4JECBAgAABAgQIECBAgAABAgQIECBAgACBdQIC
yLqTWZgAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYBASQScg7AQIECBAgQIAAAQIECBAgQIAAAQIE
CBAgsE7gxrqNLUyAwJMp8ODBk/nn9qcmQIAAAQIECBAgQIAAAQIECBAgQCAS8B0gEZshAgQIECBA
gAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgM
ESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQI
RAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAAB
AgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBA
gAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQI
ECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/H
bgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACB
ZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBA
gAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQI
ECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAAB
AgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRm
iAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBA
IBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQI
ECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAAB
AgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBA
gAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6
diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQI
NAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAAB
AgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBA
gAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQI
ECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2
QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAAB
ApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBA
gAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQI
ECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAAB
AgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3X
sRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBA
oFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQI
ECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAAB
AgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBA
gAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKx
GSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQI
EIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAAB
AgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBA
gAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQI
ECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+
jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAAB
As0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBA
gAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQI
ECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAAB
AgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCI
zRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBA
gEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQI
ECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAAB
AgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBA
gAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjz
dexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQI
EGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAAB
AgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBA
gAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQI
ECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBE
bIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAAB
AgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBA
gAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQI
ECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAAB
AgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECa
r2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBA
gECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQI
ECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAAB
AgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBA
gAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEk
YjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQI
ECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAAB
AgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBA
gAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQI
ECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADS
fB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAAB
AgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBA
gAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQI
ECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAAB
AgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQgg
EZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBA
gACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQI
ECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAAB
AgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBA
gAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ
5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQI
ECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAAB
AgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBA
gAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQI
ECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAA
idgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAAB
AgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBA
gAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQI
ECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQAB
AgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCA
NF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBA
gACBZgEBpPk6diNAgAABAgQIECBAVgxzsgAANqRJREFUgAABAgQIECBAgAABAgQiAQEkYjNEgAAB
AgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQgg
EZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBA
gACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQI
ECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAAB
AgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBA
gAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ
5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQI
ECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAAB
AgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBA
gAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQI
ECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAA
idgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAAB
AgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBA
gAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQI
ECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQAB
AgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCA
NF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBA
gACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQI
ECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAAB
AgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBA
gAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAIC
SMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQI
ECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAAB
AgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBA
gAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQI
ECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEB
pPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAAB
AgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBA
gAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQI
ECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAAB
AgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQ
QCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBA
gAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQI
ECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAAB
AgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNA
gAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsI
IM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQI
ECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAAB
AgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBA
gAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQI
ECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGA
ABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAAB
AgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBA
gAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQI
ECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsB
AgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlA
AGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBA
gAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQI
ECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAAB
AgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJA
gAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgE
BJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQI
ECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAAB
AgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBA
gAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0I
ECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0C
AkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAAB
AgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBA
gAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQI
ECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRAB
AgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAk
IIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBA
gAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQI
ECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAAB
AgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexG
gAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgW
EECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQI
ECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAAB
AgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBA
gAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYI
ECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQi
AQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAAB
AgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBA
gAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQI
ECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3
AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECz
gADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBA
gAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQI
ECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAAB
AgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNE
gAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQ
CQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQI
ECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAAB
AgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBA
gAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27
ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSa
BQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAAB
AgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBA
gAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQI
ECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZsh
AgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACB
SEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBA
gAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQI
ECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAAB
AgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvY
jQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQ
LCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQI
ECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAAB
AgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBA
gAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgM
ESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQI
RAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAAB
AgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBA
gAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQI
ECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/H
bgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACB
ZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBA
gAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQI
ECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAAB
AgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRm
iAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBA
IBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQI
ECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAAB
AgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBA
gAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6
diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQI
NAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAAB
AgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBA
gAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQI
ECBAgAABAgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2
QwQIECBAgAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAAB
ApGAABKxGSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBA
gAABAgQIEIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQI
ECBAgAABAgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAAB
AgQIECBAgAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3X
sRsBAgQIECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBA
oFlAAGm+jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQI
ECBAgAABAs0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAAB
AgQIECBAgAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBA
gAABAgQIECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKx
GSJAgAABAgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQI
EIgEBJCIzRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAAB
AgQIECBAgEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBA
gAABAgQIECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQI
ECBAgAABAgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+
jt0IECBAgAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAAB
As0CAkjzdexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBA
gAABAgQIEGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQI
ECBAgAABAgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAAB
AgQIECBAgAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCI
zRABAgQIECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBA
gEAkIIBEbIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQI
ECBAgAABAgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAAB
AgQIECBAgAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBA
gAABAgQIECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjz
dexGgAABAgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQI
EGgWEECar2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAAB
AgQIECBAgECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBA
gAABAgQIECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQI
ECBAgAABAgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBE
bIYIECBAgAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAAB
AgQiAQEkYjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBA
gAABAgQIECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQI
ECBAgAABAgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAAB
AgQIECBAgAABAgQIECBAgAABAgQIRAICSMRmiAABAgQIECBAgAABAgQIECBAgAABAgQIEGgWEECa
r2M3AgQIECBAgAABAgQIECBAgAABAgQIECBAIBIQQCI2QwQIECBAgAABAgQIECBAgAABAgQIECBA
gECzgADSfB27ESBAgAABAgQIECBAgAABAgQIECBAgAABApGAABKxGSJAgAABAgQIECBAgAABAgQI
ECBAgAABAgSaBQSQ5uvYjQABAgQIECBAgAABAgQIECBAgAABAgQIEIgEBJCIzRABAgQIECBAgAAB
AgQIECBAgAABAgQIECDQLCCANF/HbgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIBEbIYIECBA
gAABAgQIECBAgAABAgQIECBAgACBZgEBpPk6diNAgAABAgQIECBAgAABAgQIECBAgAABAgQiAQEk
YjNEgAABAgQIECBAgAABAgQIECBAgAABAgQINAsIIM3XsRsBAgQIECBAgAABAgQIECBAgAABAgQI
ECAQCQggEZshAgQIECBAgAABAgQIECBAgAABAgQIECBAoFlAAGm+jt0IECBAgAABAgQIECBAgAAB
AgQIECBAgACBSEAAidgMESBAgAABAgQIECBAgAABAgQIECBAgAABAs0CAkjzdexGgAABAgQIECBA
gAABAgQIECBAgAABAgR+054d0wAAwDAM48+6HHL1MIBKk3eGQBIQQBKbEQECBAgQIECAAAECBAgQ
IECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECA
AAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQEC
BAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQ
QBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQ
IECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECA
AAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAEC
BAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQ
IECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8
f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQ
IPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECA
AAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAEC
BAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQ
IECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKb
EQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECA
QBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAEC
BAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQ
IECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECA
AAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dt
BAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAs
IIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAEC
BAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQ
IECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECA
AAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQEC
BAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQ
QBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQ
IECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECA
AAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAEC
BAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQ
IECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8
f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQ
IPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECA
AAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAEC
BAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQ
IECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKb
EQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECA
QBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAEC
BAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQ
IECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECA
AAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dt
BAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAs
IIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAEC
BAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQ
IECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECA
AAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQEC
BAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQ
QBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQ
IECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECA
AAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAEC
BAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQ
IECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8
f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQ
IPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECA
AAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAEC
BAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQ
IECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKb
EQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECA
QBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAEC
BAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQ
IECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECA
AAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dt
BAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAs
IIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAEC
BAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQ
IECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECA
AAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQEC
BAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQ
QBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQ
IECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECA
AAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAEC
BAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQ
IECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8
f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQ
IPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECA
AAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAEC
BAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQ
IECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECAQBIQQBKb
EQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAECBAgQIECA
QBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQIECAAAEC
BAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECAAAECBAgQ
IECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsIIA8f8dtBAgQIECA
AAECBAgQIECAAAECBAgQIECAQBIQQBKbEQECBAgQIECAAAECBAgQIECAAAECBAgQIPAsMFDeGRUG
M6KWAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>381690</attachid>
            <date>2019-10-23 10:16:59 -0700</date>
            <delta_ts>2019-10-23 10:16:59 -0700</delta_ts>
            <desc>expected result</desc>
            <filename>textpath-selection-35-expected.png</filename>
            <type>image/png</type>
            <size>45807</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAABkAAAASwCAYAAACjAYaXAAAAKXRFWHRjaGVja3N1bQA3MWRlOGU0
YjE5MzcwYjE4MDI5NzlkNzkzZjY4OWIwMUk1KhEAAAABc1JHQgCuzhzpAAAARGVYSWZNTQAqAAAA
CAABh2kABAAAAAEAAAAaAAAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAZAoAMABAAAAAEAAASw
AAAAAJuI7H4AAEAASURBVHgB7N17uF3znT/wz4kkRII4InGJxDUhEiSMSystig5jMHUJwfRC8XQm
mFY7U9XBY4zrDK2OlqE/pVW3oVEEJap16yMuOZiEiEgoGkRK3CLJ+e11Kpmz97ntc5Hs9V2v9Tz7
yVnf9V1rfz+vzxp/9D1rr7rG0hY2AgQIECBAgAABAgQIECBAgAABAgQIECBAgEBCAr0SqkUpBAgQ
IECAAAECBAgQIECAAAECBAgQIECAAIEmAQGIG4EAAQIECBAgQIAAAQIECBAgQIAAAQIECBBITkAA
klxLFUSAAAECBAgQIECAAAECBAgQIECAAAECBAgIQNwDBAgQIECAAAECBAgQIECAAAECBAgQIECA
QHICApDkWqogAgQIECBAgAABAgQIECBAgAABAgQIECBAQADiHiBAgAABAgQIECBAgAABAgQIECBA
gAABAgSSExCAJNdSBREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQICEPcAAQIECBAgQIAAAQIECBAg
QIAAAQIECBAgkJyAACS5liqIAAECBAgQIECAAAECBAgQIECAAAECBAgQEIC4BwgQIECAAAECBAgQ
IECAAAECBAgQIECAAIHkBAQgybVUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxD1AgAABAgQI
ECBAgAABAgQIECBAgAABAgQIJCcgAEmupQoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBCDuAQIE
CBAgQIAAAQIECBAgQIAAAQIECBAgQCA5AQFIci1VEAECBAgQIECAAAECBAgQIECAAAECBAgQICAA
cQ8QIECAAAECBAgQIECAAAECBAgQIECAAAECyQkIQJJrqYIIECBAgAABAgQIECBAgAABAgQIECBA
gAABAYh7gAABAgQIECBAgAABAgQIECBAgAABAgQIEEhOQACSXEsVRIAAAQIECBAgQIAAAQIECBAg
QIAAAQIECAhA3AMECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAcgICkORaqiACBAgQIECAAAECBAgQ
IECAAAECBAgQIEBAAOIeIECAAAECBAgQIECAAAECBAgQIECAAAECBJITEIAk11IFESBAgAABAgQI
ECBAgAABAgQIECBAgAABAgIQ9wABAgQIECBAgAABAgQIECBAgAABAgQIECCQnIAAJLmWKogAAQIE
CBAgQIAAAQIECBAgQIAAAQIECBAQgLgHCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeQEBCDJtVRB
BAgQIECAAAECBAgQIECAAAECBAgQIECAgADEPUCAAAECBAgQIECAAAECBAgQIECAAAECBAgkJyAA
Sa6lCiJAgAABAgQIECBAgAABAgQIECBAgAABAgQEIO4BAgQIECBAgAABAgQIECBAgAABAgQIECBA
IDkBAUhyLVUQAQIECBAgQIAAAQIECBAgQIAAAQIECBAgIABxDxAgQIAAAQIECBAgQIAAAQIECBAg
QIAAAQLJCQhAkmupgggQIECAAAECBAgQIECAAAECBAgQIECAAAEBiHuAAAECBAgQIECAAAECBAgQ
IECAAAECBAgQSE5AAJJcSxVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEDcAwQIECBAgAABAgQI
ECBAgAABAgQIECBAgEByAgKQ5FqqIAIECBAgQIAAAQIECBAgQIAAAQIECBAgQEAA4h4gQIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIEkhMQgCTXUgURIECAAAECBAgQIECAAAECBAgQIECAAAECAhD3AAEC
BAgQIECAAAECBAgQIECAAAECBAgQIJCcgAAkuZYqiAABAgQIECBAgAABAgQIECBAgAABAgQIEBCA
uAcIECBAgAABAgQIECBAgAABAgQIECBAgACB5AQEIMm1VEEECBAgQIAAAQIECBAgQIAAAQIECBAg
QICAAMQ9QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCQnIABJrqUKIkCAAAECBAgQIECAAAECBAgQ
IECAAAECBAQg7gECBAgQIECAAAECBAgQIECAAAECBAgQIEAgOQEBSHItVRABAgQIECBAgAABAgQI
ECBAgAABAgQIECAgAHEPECBAgAABAgQIECBAgAABAgQIECBAgAABAskJCECSa6mCCBAgQIAAAQIE
CBAgQIAAAQIECBAgQIAAAQGIe4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBBITkAAklxLFUSAAAEC
BAgQIECAAAECBAgQIECAAAECBAgIQNwDBAgQIECAAAECBAgQIECAAAECBAgQIECAQHICApDkWqog
AgQIECBAgAABAgQIECBAgAABAgQIECBAQADiHiBAgAABAgQIECBAgAABAgQIECBAgAABAgSSExCA
JNdSBREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQICEPcAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg
kJyAACS5liqIAAECBAgQIECAAAECBAgQIECAAAECBAgQEIC4BwgQIECAAAECBAgQIECAAAECBAgQ
IECAAIHkBAQgybVUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxD1AgAABAgQIECBAgAABAgQI
ECBAgAABAgQIJCcgAEmupQoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBCDuAQIECBAgQIAAAQIE
CBAgQIAAAQIECBAgQCA5AQFIci1VEAECBAgQIECAAAECBAgQIECAAAECBAgQICAAcQ8QIECAAAEC
BAgQIECAAAECBAgQIECAAAECyQkIQJJrqYIIECBAgAABAgQIECBAgAABAgQIECBAgAABAYh7gAAB
AgQIECBAgAABAgQIECBAgAABAgQIEEhOQACSXEsVRIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAhA
3AMECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAcgICkORaqiACBAgQIECAAAECBAgQIECAAAECBAgQ
IEBAAOIeIECAAAECBAgQIECAAAECBAgQIECAAAECBJITEIAk11IFESBAgAABAgQIECBAgAABAgQI
ECBAgAABAgIQ9wABAgQIECBAgAABAgQIECBAgAABAgQIECCQnIAAJLmWKogAAQIECBAgQIAAAQIE
CBAgQIAAAQIECBAQgLgHCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeQEBCDJtVRBBAgQIECAAAEC
BAgQIECAAAECBAgQIECAgADEPUCAAAECBAgQIECAAAECBAgQIECAAAECBAgkJyAASa6lCiJAgAAB
AgQIECBAgAABAgQIECBAgAABAgQEIO4BAgQIECBAgAABAgQIECBAgAABAgQIECBAIDkBAUhyLVUQ
AQIECBAgQIAAAQIECBAgQIAAAQIECBAgIABxDxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLJCQhA
kmupgggQIECAAAECBAgQIECAAAECBAgQIECAAAEBiHuAAAECBAgQIECAAAECBAgQIECAAAECBAgQ
SE5AAJJcSxVEgAABAgQIECBAgAABAgQIECBAgAABAgQICEDcAwQIECBAgAABAgQIECBAgAABAgQI
ECBAgEByAgKQ5FqqIAIECBAgQIAAAQIECBAgQIAAAQIECBAgQEAA4h4gQIAAAQIECBAgQIAAAQIE
CBAgQIAAAQIEkhMQgCTXUgURIECAAAECBAgQIECAAAECBAgQIECAAAECAhD3AAECBAgQIECAAAEC
BAgQIECAAAECBAgQIJCcgAAkuZYqiAABAgQIECBAgAABAgQIECBAgAABAgQIEBCAuAcIECBAgAAB
AgQIECBAgAABAgQIECBAgACB5AQEIMm1VEEECBAgQIAAAQIECBAgQIAAAQIECBAgQICAAMQ9QIAA
AQIECBAgQIAAAQIECBAgQIAAAQIECCQnIABJrqUKIkCAAAECBAgQIECAAAECBAgQIECAAAECBAQg
7gECBAgQIECAAAECBAgQIECAAAECBAgQIEAgOQEBSHItVRABAgQIECBAgAABAgQIECBAgAABAgQI
ECAgAHEPECBAgAABAgQIECBAgAABAgQIECBAgAABAskJCECSa6mCCBAgQIAAAQIECBAgQIAAAQIE
CBAgQIAAAQGIe4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBBITkAAklxLFUSAAAECBAgQIECAAAEC
BAgQIECAAAECBAgIQNwDBAgQIECAAAECBAgQIECAAAECBAgQIECAQHICApDkWqogAgQIECBAgAAB
AgQIECBAgAABAgQIECBAQADiHiBAgAABAgQIECBAgAABAgQIECBAgAABAgSSExCAJNdSBREgQIAA
AQIECBAgQIAAAQIECBAgQIAAAQICEPcAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkJyAACS5liqI
AAECBAgQIECAAAECBAgQIECAAAECBAgQEIC4BwgQIECAAAECBAgQIECAAAECBAgQIECAAIHkBAQg
ybVUQQQIECBAgAABAgQIECBAgAABAgQIECBAgIAAxD1AgAABAgQIECBAgAABAgQIECBAgAABAgQI
JCcgAEmupQoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBCDuAQIECBAgQIAAAQIECBAgQIAAAQIE
CBAgQCA5AQFIci1VEAECBAgQIECAAAECBAgQIECAAAECBAgQICAAcQ8QIECAAAECBAgQIECAAAEC
BAgQIECAAAECyQkIQJJrqYIIECBAgAABAgQIECBAgAABAgQIECBAgAABAYh7gAABAgQIECBAgAAB
AgQIECBAgAABAgQIEEhOQACSXEsVRIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAhA3AMECBAgQIAA
AQIECBAgQIAAAQIECBAgQIBAcgICkORaqiACBAgQIECAAAECBAgQIECAAAECBAgQIEBAAOIeIECA
AAECBAgQIECAAAECBAgQIECAAAECBJITEIAk11IFESBAgAABAgQIECBAgAABAgQIECBAgAABAgIQ
9wABAgQIECBAgAABAgQIECBAgAABAgQIECCQnIAAJLmWKogAAQIECBAgQIAAAQIECBAgQIAAAQIE
CBAQgLgHCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeQEBCDJtVRBBAgQIECAAAECBAgQIECAAAEC
BAgQIECAgADEPUCAAAECBAgQIECAAAECBAgQIECAAAECBAgkJyAASa6lCiJAgAABAgQIECBAgAAB
AgQIECBAgAABAgQEIO4BAgQIECBAgAABAgQIECBAgAABAgQIECBAIDkBAUhyLVUQAQIECBAgQIAA
AQIECBAgQIAAAQIECBAgIABxDxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLJCQhAkmupgggQIECA
AAECBAgQIECAAAECBAgQIECAAAEBiHuAAAECBAgQIECAAAECBAgQIECAAAECBAgQSE5AAJJcSxVE
gAABAgQIECBAgAABAgQIECBAgAABAgQICEDcAwQIECBAgAABAgQIECBAgAABAgQIECBAgEByAgKQ
5FqqIAIECBAgQIAAAQIECBAgQIAAAQIECBAgQEAA4h4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE
khMQgCTXUgURIECAAAECBAgQIECAAAECBAgQIECAAAECAhD3AAECBAgQIECAAAECBAgQIECAAAEC
BAgQIJCcgAAkuZYqiAABAgQIECBAgAABAgQIECBAgAABAgQIEBCAuAcIECBAgAABAgQIECBAgAAB
AgQIECBAgACB5AQEIMm1VEEECBAgQIAAAQIECBAgQIAAAQIECBAgQICAAMQ9QIAAAQIECBAgQIAA
AQIECBAgQIAAAQIECCQnIABJrqUKIkCAAAECBAgQIECAAAECBAgQIECAAAECBAQg7gECBAgQIECA
AAECBAgQIECAAAECBAgQIEAgOQEBSHItVRABAgQIECBAgAABAgQIECBAgAABAgQIECAgAHEPECBA
gAABAgQIECBAgAABAgQIECBAgAABAskJCECSa6mCCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQGI
e4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBBITkAAklxLFUSAAAECBAgQIECAAAECBAgQIECAAAEC
BAgIQNwDBAgQIECAAAECBAgQIECAAAECBAgQIECAQHICApDkWqogAgQIECBAgAABAgQIECBAgAAB
AgQIECBAQADiHiBAgAABAgQIECBAgAABAgQIECBAgAABAgSSExCAJNdSBREgQIAAAQIECBAgQIAA
AQIECBAgQIAAAQICEPcAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkJyAACS5liqIAAECBAgQIECA
AAECBAgQIECAAAECBAgQEIC4BwgQIECAAAECBAgQIECAAAECBAgQIECAAIHkBAQgybVUQQQIECBA
gAABAgQIECBAgAABAgQIECBAgIAAxD1AgAABAgQIECBAgAABAgQIECBAgAABAgQIJCcgAEmupQoi
QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBCDuAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCA5AQFI
ci1VEAECBAgQIECAAAECBAgQIECAAAECBAgQICAAcQ8QIECAAAECBAgQIECAAAECBAgQIECAAAEC
yQn0Tq4iBREgsEoE/vjHP8bDDz8cS5YsWfH9vXr1ilGjRsWYMWNWjPmDAAECBAgQIECAAAECBAgQ
IECAAAECK0NAALIylH0HgcQFzjrrrDjzzDPbrPKee+6JffbZp83jDhAgQIAAAQIECBAgQIAAAQIE
CBAgQKCnBfwEVk+Luh6BAgpceeWV7VY9Y8aMdo87SIAAAQIECBAgQIAAAQIECBAgQIAAgZ4WEID0
tKjrESigwM4771zAqpVMgAABAgQIECBAgAABAgQIECBAgEAtC/gJrFrujrURyInAOeecE3379o3n
n38+/vznP8fs2bNzsnLLJECAAAECBAgQIECAAAECBAgQIEAgVQEBSKqdVReBlSiw9dZbxy9/+csV
35i9/LyxsXHFfl1d3Yq//UGAAAECBAgQIECAAAECBAgQIECAAIGVIeAnsFaGsu8gQIAAAQIECBAg
QIAAAQIECBAgQIAAAQIEVqqAAGSlcvsyAgQIECBAgAABAgQIECBAgAABAgQIECBAYGUICEBWhrLv
IECAAAECBAgQIECAAAECBAgQIECAAAECBFaqgABkpXL7MgIECBAgQIAAAQIECBAgQIAAAQIECBAg
QGBlCAhAVoay7yBAgAABAgQIECBAgAABAgQIECBAgAABAgRWqkDvlfptvoxA4gKvvvpq/O53v4sZ
M2bE22+/HQsXLmz69913342hQ4fGVlttteKz3Xbbxeqrr564SPXlffzxx7F06dJYY401qj/JTAIE
CBAgQIAAAQIECBAgQIAAAQIECLQhIABpA8YwgWoFHn/88bj88svj/vvvjxdeeKHa02KLLbaIH/zg
B/E3f/M3VZ+TysSPPvoopk6dGpMnT46HHnooXnvttViwYEE0NjbGWmutFUOGDImddtop9t9//9hv
v/1i0KBBqZSuDgIECBAgQIAAAQIECBAgQIAAAQIEVpJAXel/cGxcSd/lawgkJbBo0aL4+te/Htdf
f3236jrooIPi0ksvjU022aRb16mlk3v16tUUZixf0w9/+MOYNGlS09jVV18d3/3ud+NPf/rT8sPt
/ps9EfKP//iPTefU19e3O9dBAgQIECBAgAABAgQIECBAgAABAgQILBfwDpDlEv4l0EmB7H+U7274
kX1l9hTEYYcdFsuWLevkCvI1/a233ordd989vva1r1UdfmQVfvjhh3HRRRc1PTEzZcqUfBVttQQI
ECBAgAABAgQIECBAgAABAgQIrDIBP4G1yuh9cd4Fpk2b1mYJ/fv3j3333TdGjBgRm266aXzwwQcx
e/bsmDVrVtx3331N77pofvIf/vCHuPLKK+P4449vPpzM3/Pnz48999wznn766S7XlL1P5W//9m/j
wgsvjH/6p3/q8nWcSIAAAQIECBAgQIAAAQIECBAgQIBAMQT8BFYx+qzKT0HgW9/6Vvznf/7niiuv
ttpqTe+sOProo+OAAw6INddcc8Wx5n8888wzcdJJJzW9M6T5ePbzTs8991wS77uo/AmsbL/yCZfs
p6122WWXyF4GP2bMmKaXw8+dOzcaGhqaPlkolL08vrXtJz/5SZxwwgmtHTJGgAABAgQIECBAgAAB
AgQIECBAgACBJgEBiBuBQBcF3nzzzTjvvPPi2Wefjc9//vNxzDHHxMYbb1zV1bIwYOedd47sBerN
t+yl6Fk4kvetMgCprCf7Kayf/vSnTaFH5bHl+6+//nqceOKJTT8Rtnxs+b99+vRpepJm/Pjxy4f8
S4AAAQIECBAgQIAAAQIECBAgQIAAgTIBAUgZhx0CK0/g0Ucfjc985jNlLwv/h3/4h/jRj3608hbx
KX1TWwHI6quvHueff37TC9GzOdVs1113XWQu2U9gNd8222yzpidmsjDERoAAAQIECBAgQIAAAQIE
CBAgQIAAgUqB6v4XyMqz7BMg0G2BXXfdtekdIc0vlL0jJOXtzDPPjJNPPjmqDT8yi4kTJ8YVV1zR
gmXOnDnx3//93y3GDRAgQIAAAQIECBAgQIAAAQIECBAgQCATEIC4DwisQoEtttii7Nuff/75sv2U
dsaNGxennnpql0o67LDD4ktf+lKLc7OfILMRIECAAAECBAgQIECAAAECBAgQIECgNYHerQ0aI0Cg
8wLvv/9+008yvfzyy/HKK6/E8n//9Kc/Nb0QfeDAgZF9stAjCwO233772HLLLcu+aN68ebFkyZLo
3Tut/9PMnvi46qqrulXXZZddFlOnTi37KazMePr06U2WZZB2CBAgQIAAAQIECBAgQIAAAQIECBAo
vEBa/ytr4dsJYFUIZGHHpZde2vQzTZXvqWhvPVko0L9//7Ip2cvRUwxARowYETvssENZrZ3dGTJk
SOy5555x6623lp06ZcoUAUiZiB0CBAgQIECAAAECBAgQIECAAAECBDIBP4HlPiDQRYFnnnkmjjrq
qMhexn3BBReUPZlQzSWzsOPdd9+tZmru54wePbpHahgzZkyL62R9sBEgQIAAAQIECBAgQIAAAQIE
CBAgQKBSwBMglSL2CVQh8Otf/zomTJgQH3zwQRWzTWktuOiKSmvXmT9/flcu5RwCBAgQIECAAAEC
BAgQIECAAAECBBIXEIAk3mDl9bzAAw88EH/3d38XS5cubXHx1VZbLfbZZ584+OCDY+jQobHBBhs0
fdZZZ51YsGBBvPHGG5G95+P3v/99ZNd56qmnInsSJPWt8mXvXa13q622anFqZmojQIAAAQIECBAg
QIAAAQIECBAgQIBApYAApFLEPoF2BLIXnX/ta19rEX707ds3zjzzzPjKV74SG264YatXGDBgQAwb
Nix23HHHpgAlm/T9738//u3f/q3V+SkNzp07t0fKycKjyq3yPSqVx+0TIECAAAECBAgQIECAAAEC
BAgQIFBMAQFIMfuu6i4K3HjjjfHiiy+Wnb3WWmvFr371q9hrr73KxqvZyV6EXoStp97T0dp1spej
2wgQIECAAAECBAgQIECAAAECBAgQIFApUIz/9bWyavsEuihwww03tDjzl7/8ZZfCjxYXSnigteCi
K+W2dp3sqRobAQIECBAgQIAAAQIECBAgQIAAAQIEKgUEIJUi9gm0I9DQ0FB2NHv6Y9999y0b68xO
T/00VEff+e6778Zpp50Wu+66awwcOLDps8suu8R3vvOdWLhwYUend/v4zJkzY/bs2d26TvbC+ezd
KZVb9s4VGwECBAgQIECAAAECBAgQIECAAAECBCoF6hpLW+WgfQIEWgpkLyvP3vXR/OXnf/3Xfx1T
pkxpObmKkUWLFjW9LyT7t/mW/Q/9a6yxRvOhbv09bdq0OOigg+LVV19t9Trrr79+3HLLLbH77ru3
erwrg9lPe1X+pyX7ibD77ruvK5drOufb3/52XHTRRWXn9+vXL956663I/rURIECAAAECBAgQIECA
AAECBAgQIECguYAnQJpr+JtAOwJ1dXWRvci8+dbaS7mbH2/r7yxM+ed//ueoDD/amt/V8ezJjyOO
OKLN8CO77htvvBETJ06Mt99+u6tfU9V5U6dOjSuvvLKquZWTshDn4osvrhyOL3/5y8KPFioGCBAg
QIAAAQIECBAgQIAAAQIECBDIBAQg7gMCVQpkAcj2229fNnvGjBnx/PPPl411tJOFEgceeGBcdtll
HU3t9vGf/exnVf301MsvvxzZ3E97+9a3vhWTJ0/u1NdMnz49jjrqqLInb7ILrLnmmvGv//qvnbqW
yQQIECBAgAABAgQIECBAgAABAgQIFEdAAFKcXqu0BwTGjh1bdpXsZ56yMKOa92gsXrw4rrnmmthp
p53ijjvuKLvOp7XzxBNPVH3pJ598suq5XZ34zjvvxMEHHxxHH310LFiwoN3LZF5nnHFG/NVf/VWr
IVN2bMMNN2z3Gg4SIECAAAECBAgQIECAAAECBAgQIFBcgd7FLV3lBDovsOeee8YPfvCDshOfe+65
2GabbeJ73/te008yZS9GX75lwciLL74Yd955Z/zXf/1XvP7668sPtfnvSy+91PSzTuuss05kn+zJ
k65uHYUMza9bTYjTfH7l39nPemXXyEKOjrZf/OIXce+998b+++8f2223XYwZMyZGjBgR2U+KPf30
0/HMM880Hc9sW9uOPPLIphe4t3bMGAECBAgQIECAAAECBAgQIECAAAECBDIBL0F3HxDopED2To0b
brihzbOGDBkSG2ywQWQ/K9VeANG7d++YMGFCZGFAW1v2gvKrr766KShoa05749lPRJ199tntTVlx
7PTTT6967oqTPvkj+1mrr371q22+RyR7UmPjjTeO7F0e3d2yECoLlHryRfHdXZPzCRAgQIAAAQIE
CBAgQIAAAQIECBCoPQEBSO31xIpqXODPf/5z07tA5s6d2+WVZmFAFqIMGzas6dPehXbbbbd4+OGH
25vS5rHHHnsssvOXLl3a5pzswGqrrdb0HTvvvHO789o6mH3Ho48+2tbh2GyzzeKRRx6JXXfdNbIn
XLq6nXDCCXHppZdGnz59unoJ5xEgQIAAAQIECBAgQIAAAQIECBAgUBAB7wApSKOV2XMC2c9S3Xbb
bbHjjjt2+qLZUwunnHJKZC/2/uxnPxtDhw5t+vmn9i40YMCA9g63eyx7f8Zpp53W7pzsYPbzXV0N
P7Lz+/fvn/3T5pbVnT0Z8/vf/75LT7MMHz686UmZn/zkJ8KPNpUdIECAAAECBAgQIECAAAECBAgQ
IECguYAnQJpr+JtApUA7799YVpp7VemTxQtvVp5Xsb9Jaf+Q0ufU0mfjimO/Le3/U+nzVMV49ozD
50ufM0qf3SuOdWa3sTT52tLnn0ufyjeQbFQaO7/0Oar06fqbRiIeKJ1/Zunz+9Kn8lmTrI7M6MzS
Z/mW/YDYlaXPb0ufJaVPa9tqpcFdS58jSp/jS5++pU/TVnrxvI0AAQIECBAgQIAAAQIECBAgQIAA
AQIdCQhAOhJyvNgC7QQgy2HeLf2RhRczS5/sld0vlD79Sp8NS5+hpc8XSp/tS59VvX1UWkC2vuyT
hR0jP/msCBZK+yt7e6v0hX8ofV4rfbJwJlvXkNJng9InCz/WK31abAKQFiQGCBAgQIAAAQIECBAg
QIAAAQIECBBoKSAAaWlihACBWhRYHkYJQGqxO9ZEgAABAgQIECBAgAABAgQIECBAoOYEvAOk5lpi
QQQIECBAgAABAgQIECBAgAABAgQIECBAgEB3BQQg3RV0PgECBAgQIECAAAECBAgQIECAAAECBAgQ
IFBzAgKQmmuJBREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLdFRCAdFfQ+QQIECBAgAABAgQIECBA
gAABAgQIECBAgEDNCQhAaq4lFkSAAAECBAgQIECAAAECBAgQIECAAAECBAh0V0AA0l1B5xMgQIAA
AQIECBAgQIAAAQIECBAgQIAAAQI1JyAAqbmWWBABAgQIECBAgAABAgQIECBAgAABAgQIECDQXQEB
SHcFnU+AAAECBAgQIECAAAECBAgQIECAAAECBAjUnIAApOZaYkEECBAgQIAAAQIECBAgQIAAAQIE
CBAgQIBAdwUEIN0VdD4BAgQIECBAgAABAgQIECBAgAABAgQIECBQcwICkJpriQURIECAAAECBAgQ
IECAAAECBAgQIECAAAEC3RUQgHRX0PkECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAzQkIQGquJRZE
gAABAgQIECBAgAABAgQIECBAgAABAgQIdFdAANJdQecTIECAAAECBAgQIECAAAECBAgQIECAAAEC
NScgAKm5llgQAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0F0BAUh3BZ1PgAABAgQIECBAgAABAgQI
ECBAgAABAgQI1JyAAKTmWmJBBAgQIECAAAECBAgQIECAAAECBAgQIECAQHcFBCDdFXQ+AQIECBAg
QIAAAQIECBAgQIAAAQIECBAgUHMCvWtuRRZEgACBDgSefPLJuOOOO6KhoSHq6+tj3LhxcdRRR0X/
/v07ONNhAgQIECBAgAABAgQIECBAgAABAgSKIlDXWNqKUqw6CRDIsUBdXdPi/+3ss+Oss86KJUuW
lBUzcuTIuP7662OHHXYoG7dDgAABAgQIECBAgAABAgQIECBAgEAxBQQgxey7qgnkT6AUgPyitOqj
21n50KFDY+bMmZ4EacfIIQIECBAgQIAAAQIECBAgQIAAAQJFEfAOkKJ0Wp0Eci6wuLT+73RQwyuv
vBLnnXdeB7McJkCAAAECBAgQIECAAAECBAgQIECgCAICkCJ0WY0EEhB4rlTDq1XUce+991YxyxQC
BAgQIECAAAECBAgQIECAAAECBFIXEICk3mH1EUhEIAtAqtmyn8CyESBAgAABAgQIECBAgAABAgQI
ECBAQADiHiBAIBcCjVWuctmyZVXONI0AAQIECBAgQIAAAQIECBAgQIAAgZQFBCApd1dtBBISGFll
LSNHVjuzyguaRoAAAQIECBAgQIAAAQIECBAgQIBALgUEILlsm0UTKJ5AFmtsUEXZ48ePr2KWKQQI
ECBAgAABAgQIECBAgAABAgQIpC5Q11jaUi9SfQQIJCBQVxdXl8r4ajulrLfeevH8889HfX19O7Mc
IkCAAAECBAgQIECAAAECBAgQIECgCAKeAClCl9VIIBGBL5fq+Jd/+Zfo1avlf7o22mijuPnmm4Uf
ifRaGQQIECBAgAABAgQIECBAgAABAgS6K+AJkO4KOp8AgZUjUHoCpGkrPbT20EMPxW233RYNDQ0x
cODAGDt2bBx77LGRPQFiI0CAAAECBAgQIECAAAECBAgQIECAQCYgAHEfECCQD4FmAUg+FmyVBAgQ
IECAAAECBAgQIECAAAECBAisSoGWvyOzKlfjuwkQIECAAAECBAgQIECAAAECBAgQIECAAAECPSAg
AOkBRJcgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEaktAAFJb/bAaAgQIECBAgAABAgQIECBAgAAB
AgQIECBAoAcEBCA9gOgSBAgQIECAAAECBAgQIECAAAECBAgQIECAQG0JCEBqqx9WQ4AAAQIECBAg
QIAAAQIECBAgQIAAAQIECPSAgACkBxBdggABAgQIECBAgAABAgQIECBAgAABAgQIEKgtAQFIbfXD
aggQIECAAAECBAgQIECAAAECBAgQIECAAIEeEBCA9ACiSxAgQIAAAQIECBAgQIAAAQIECBAgQIAA
AQK1JSAAqa1+WA0BAgQIECBAgAABAgQIECBAgAABAgQIECDQAwICkB5AdAkCBAgQIECAAAECBAgQ
IECAAAECBAgQIECgtgQEILXVD6shQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEekBAANIDiC5BgAAB
AgQIECBAgAABAgQIECBAgAABAgQI1JaAAKS2+mE1BAgQIECAAAECBAgQIECAAAECBAgQIECAQA8I
9O6Ba7gEAQIEak6gsbEx3n777ViwYEGsu+66UV9fH3V1dTW3TgsiQIAAAQIECBAgQIAAAQIECBAg
QODTERCAfDqurkqAwEoW+Pjjj2Pq1Klx++23x1133RVz586NbGz51qdPnxg2bFh88YtfjAMOOCD2
3nvvyMZsBAgQIECAAAECBAgQIECAAAECBAikKVBX+v+SbkyzNFURIJCUwPKnN1r5T9bNN98c3/3u
d+OFF16ouuTNN988zjnnnJgwYYInQ6pWM5EAAQIECBAgQIAAAQIECBAgQIBAfgQEIPnplZUSKLZA
KwFI9vNWhx12WNOTH13FGT9+fPzP//xPrL/++l29hPMIECBAgAABAgQIECBAgAABAgQIEKhBAQFI
DTbFkggQaEWgIgDJnvbYf//9Y9asWa1M7tzQZptt1vTTWaNGjerciWYTIECAAAECBAgQIECAAAEC
BAgQIFCzAgKQmm2NhREgUCbQLAB57bXXYscdd4zs3462vn37xuLFizuaFoMGDYpp06bF8OHDO5xr
AgECBAgQIECAAAECBAgQIECAAAECtS8gAKn9HlkhAQKZwCcByMelMGOPPfaIhx9+uFWX7CXne+21
V4wePbrpk734/NVXX42nnnoqpk+f3vRzWffee2+r544bNy4efPDB6NevX6vHDRIgQIAAAQIECBAg
QIAAAQIECBAgkB8BAUh+emWlBIot8EkAcvr3vtf08vJKjCFDhsSPfvSjOPTQQysPtdi/+uqr46ST
Top33323xbGTTz45LrnkkhbjBggQIECAAAECBAgQIECAAAECBAgQyJeAACRf/bJaAsUVKAUgb5Sq
36x//3jvvffKHA455JC44ooror6+vmy8vZ2XXnopJk6cGI888kjZtOwns7L3i2yyySZl43YIECBA
gAABAgQIECBAgAABAgQIEMiXQK98LddqCRAossCFpeIrw4+RI0fGz3/+806FH5nhpptuGrfeemsM
HDiwjDR7X8i///u/l43ZIUCAAAECBAgQIECAAAECBAgQIEAgfwICkPz1zIoJFFbgFxWV9+rVK376
05/GGmusUXGkut3sZ7NaCztuuOGGWLp0aXUXMYsAAQIECBAgQIAAAQIECBAgQIAAgZoUEIDUZFss
igCBSoFnSgOvVgxOmjQpPvOZz1SMdm73hBNOiJ133rnspLfffjsee+yxsjE7BAgQIECAAAECBAgQ
IECAAAECBAjkS0AAkq9+WS2BwgpMbaXyww47rJXRzg1lT5F84xvfaHHSfffd12LMAAECBAgQIECA
AAECBAgQIECAAAEC+REQgOSnV1ZKoNACc1upfsyYMa2Mdn5o1KhRLU56+eWXW4wZIECAAAECBAgQ
IECAAAECBAgQIEAgPwICkPz0ykoJFFrgjYrqhw8fHmuvvXbFaNd2t9lmmxYnzp8/v8WYAQIECBAg
QIAAAQIECBAgQIAAAQIE8iMgAMlPr6yUQKEFFlRU39pTGxVTqt4dMGBAbLLJJmXzs/eA2AgQIECA
AAECBAgQIECAAAECBAgQyK+AACS/vbNyAoUSGFRR7cKFCytGure73nrrlV1ggw02KNu3Q4AAAQIE
CBAgQIAAAQIECBAgQIBAvgQEIPnql9USKKzAphWVz5o1q2Kke7vz5s0ru8AWW2xRtm+HAAECBAgQ
IECAAAECBAgQIECAAIF8CQhA8tUvqyVQWIHNKip/8803o6eeAsmus2BB+Y9sbb755hXfaJcAAQIE
CBAgQIAAAQIECBAgQIAAgTwJCEDy1C1rJVBggU1bqf2JJ55oZbTzQ7/4xS9anOQJkBYkBggQIECA
AAECBAgQIECAAAECBAjkSqCusbTlasUWS4BAIQX+VFcXG5UqX9as+v322y/uvPPOZiOd/3PZsmWx
7bbbxsyZM1ecnL0U/bXXXovsXxsBAgQIECBAgAABAgQIECBAgAABAvkU8ARIPvtm1QQKJzCkVPF+
FVVPmTIluvsUyOmnn14WfmRfcfjhhws/KqztEiBAgAABAgQIECBAgAABAgQIEMibgAAkbx2zXgIF
FjihldrPPvvsVkarG7r22mvj3HPPbTH5uOOOazFmgAABAgQIECBAgAABAgQIECBAgACBfAkIQPLV
L6slUGiB/UvVDx06tMzgV7/6Vdx0001lYx3tfPzxx/HNb34z/v7v/77F1OznsHbbbbcW4wYIECBA
gAABAgQIECBAgAABAgQIEMiXgAAkX/2yWgKFFlitVP2xxx7bwuD444+PV155pcV4awMNDQ1NAcfF
F1/c2uE45JBDWh03SIAAAQIECBAgQIAAAQIECBAgQIBAvgS8BD1f/bJaAsUVKL0EPdveXrAgtt56
65g/f36ZxT777BN333131H0yr+zgJzvZO0MOPvjgWLx4cWuHV4z1xMvVV1zMHwQIECBAgAABAgQI
ECBAgAABAgQIrBIBT4CsEnZfSoBAVwXWXXfduOSSS1qc/pvf/CYeeeSRFuPNB84///wOw49sfhaU
vPDCC81P9TcBAgQIECBAgAABAgQIECBAgAABAjkTEIDkrGGWS4BAxJFHHhmTJk1qQTFnzpwWY10Z
aO8pkq5czzkECBAgQIAAAQIECBAgQIAAAQIECKx8AQHIyjf3jQQI9IBA9hTIt7/97ejV6y//Gdt4
443joIMOavfKJ554YqyzzjrtzskOZgHLlltu2eE8EwgQIECAAAECBAgQIECAAAECBAgQqF0B7wCp
3d5YGQECzQWWv9ujsbH5aMybNy9mz54d48ePj969e5cda23no48+iunTp8fSpUvLDmdPfQwYMCAG
Dx7c9Ck7aIcAAQIECBAgQIAAAQIECBAgQIAAgdwJCEBy1zILJlBQgTYCkIJqKJsAAQIECBAgQIAA
AQIECBAgQIAAgQ4E/ARWB0AOEyBAgAABAgQIECBAgAABAgQIECBAgAABAvkTEIDkr2dWTIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIECHQgIADpAMhhAgQIECBAgAABAgQIECBAgAABAgQIECBAIH8CApD8
9cyKCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQ4EBCAdADlMgAABAgQIECBAgAABAgQIECBAgAAB
AgQI5E9AAJK/nlkxAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0IGAAKQDIIcJECBAgAABAgQIECBA
gAABAgQIECBAgACB/AkIQPLXMysmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEOhAQgHQA5DABAgQI
ECBAgAABAgQIECBAgAABAgQIECCQPwEBSP56ZsUECBAgQIAAAQIECBAgQIAAAQIECBAgQIBABwIC
kA6AHCZAgAABAgQIECBAgAABAgQIECBAgAABAgTyJyAAyV/PrJgAAQIECBAgQIAAAQIECBAgQIAA
AQIECBDoQEAA0gGQwwQIECBAgAABAgQIECBAgAABAgQIECBAgED+BAQg+euZFRMgQIAAAQIECBAg
QIAAAQIECBAgQIAAAQIdCAhAOgBymAABAgQIECBAgAABAgQIECBAgAABAgQIEMifQO/8LdmKCRAo
usD06dPjjjvuiIaGhqivr49x48bFxIkTY8011yw6jfoJECBAgAABAgQIECBAgAABAgQIEPhEoK6x
tNEgQIBAzQvU1TUt8d/POSfOOOOMWLJkSdmSt95667j++utj++23Lxu3Q4AAAQIECBAgQIAAAQIE
CBAgQIBAMQUEIMXsu6oJ5E+gFIBcV1r1Ue2sfJNNNokZM2ZE//7925nlEAECBAgQIECAAAECBAgQ
IECAAAECRRDwDpAidFmNBBIQWFyq4Tsd1PHyyy/H+eef38EshwkQIECAAAECBAgQIECAAAECBAgQ
KIKAAKQIXVYjgQQEnivV8Mcq6vjNb35TxSxTCBAgQIAAAQIECBAgQIAAAQIECBBIXUAAknqH1Ucg
EYEsAKlmmzlzZjXTzCFAgAABAgQIECBAgAABAgQIECBAIHEBAUjiDVYegVQEGqssZNmyZVXONI0A
AQIECBAgQIAAAQIECBAgQIAAgZQFBCApd1dtBBISGFllLSNGjKhypmkECBAgQIAAAQIECBAgQIAA
AQIECKQsIABJubtqI5CQQBaADKminvHjx1cxyxQCBAgQIECAAAECBAgQIECAAAECBFIXqGssbakX
qT4CBBIQqKuL/1cq42vtlFJfXx+zZs2K7F8bAQIECBAgQIAAAQIECBAgQIAAAQLFFvAESLH7r3oC
uRL4Smm13/nOd6KuFIZUbhtuuGHcfPPNwo9KGPsECBAgQIAAAQIECBAgQIAAAQIECirgCZCCNl7Z
BHInsDz0KD209uCDD8bkyZOjoaEhBg4cGGPHjo3jjjsuBg0alLuyLJgAAQIECBAgQIAAAQIECBAg
QIAAgU9HQADy6bi6KgECPS3QLADp6Uu7HgECBAgQIECAAAECBAgQIECAAAEC6Qn4Caz0eqoiAgQI
ECBAgAABAgQIECBAgAABAgQIECBQeAEBSOFvAQAECBAgQIAAAQIECBAgQIAAAQIECBAgQCA9AQFI
ej1VEQECBAgQIECAAAECBAgQIECAAAECBAgQKLyAAKTwtwAAAgQIECBAgAABAgQIECBAgAABAgQI
ECCQnoAAJL2eqogAAQIECBAgQIAAAQIECBAgQIAAAQIECBReQABS+FsAAAECBAgQIECAAAECBAgQ
IECAAAECBAgQSE9AAJJeT1VEgAABAgQIECBAgAABAgQIECBAgAABAgQKLyAAKfwtAIAAAQIECBAg
QIAAAQIECBAgQIAAAQIECKQnIABJr6cqIkCAAAECBAgQIECAAAECBAgQIECAAAEChRcQgBT+FgBA
gAABAgQIECBAgAABAgQIECBAgAABAgTSExCApNdTFREgQIAAAQIECBAgQIAAAQIECBAgQIAAgcIL
CEAKfwsAIECAAAECBAgQIECAAAECBAgQIECAAAEC6QkIQNLrqYoIECBAgAABAgQIECBAgAABAgQI
ECBAgEDhBXoXXgAAAQJJCSxZsiSee+65mD9/ftMnK27w4MFNnxEjRkSfPn2SqlcxBAgQIECAAAEC
BAgQIECAAAECBAi0LiAAad3FKAECORLIQo/rrrsubr311pg6dWq88847ra5+rbXWii984Qtx4IEH
xlFHHRV9+/ZtdZ5BAgQIECBAgAABAgQIECBAgAABAgTyL1DXWNryX4YKCBBIXqCu7i8lVvwn65pr
romzzjorXnzxxU4RDB8+PM4444z4yle+EnXLr92pK5hMgAABAgQIECBAgAABAgQIECBAgEAtCwhA
ark71kaAwP8JLA8pPglA3nvvvTj22GPjhhtu+L85Xfgrexrk5z//eWRPh9gIECBAgAABAgQIECBA
gAABAgQIEEhHQACSTi9VQiBtgWYByIIFC2KPPfaIp59+ukdqHjVqVNx9990xdOjQHrmeixAgQIAA
AQIECBAgQIAAAQIECBAgsOoFBCCrvgdWQIBANQKfBCAfffhh7L333vHggw+2e9baa68do0ePjuzf
GTNmxLx586K9X/wbO3Zs0zXXXHPNdq/rIAECBAgQIECAAAECBAgQIECAAAEC+RDolY9lWiUBAgT+
InDKKae0GX5svPHGce2118acOXNi4cKF8dBDD8WUKVPipZdeinfffTemTZsWkyZNil69Wv6n78kn
n4wvf/nLmAkQIECAAAECBAgQIECAAAECBAgQSETAEyCJNFIZBJIXKD0Bkv3g1Q6l8GLZsmUtys1e
Zn7xxRfHwIEDWxyrHMiCkBNOOCGeeOKJykNx1113xRe/+MUW4wYIECBAgAABAgQIECBAgAABAgQI
EMiXgAAkX/2yWgLFFSgFIAeWqv91KwI//vGP48QTT2zlSNtDS5cujcMPPzxuueWWsknZT2E9/vjj
Ubf8nSNlR+0QIECAAAECBAgQIECAAAECBAgQIJAXAQFIXjplnQQKLvDnUiCxfsng4wqHfffdt+kF
5hXDVe2++eabse2228b8+fPL5j/wwAPxuc99rmzMDgECBAgQIECAAAECBAgQIECAAAEC+RJo+UP4
+Vq/1RIgUBCBu0p1VoYfAwYMiCuuuKLLAoMGDYrLL7+8xfl33nlnizEDBAgQIECAAAECBAgQIECA
AAECBAjkS0AAkq9+WS2Bwgq0fFtHxHHHHRfDhw/vlsnBBx8c22+/fdk1sveA2AgQIECAAAECBAgQ
IECAAAECBAgQyLeAACTf/bN6AoUR+FMrle6www6tjHZ+qDIAmT17ducv4gwCBAgQIECAAAECBAgQ
IECAAAECBGpKQABSU+2wGAIE2hJ4s5UDY8aMaWW080OV11m0aFF88MEHnb+QMwgQIECAAAECBAgQ
IECAAAECBAgQqBkBAUjNtMJCCBBoT2BgxcFevXrFNttsUzHatd3KACS7yoIFC7p2MWcRIECAAAEC
BAgQIECAAAECBAgQIFATAgKQmmiDRRAg0JHARhUTli1bFh9++GHFaNd233///RYn1tfXtxgzQIAA
AQIECBAgQIAAAQIECBAgQIBAfgQEIPnplZUSKLRAa686b2ho6BGTp59+uuw6a6+9dvTr169szA4B
AgQIECBAgAABAgQIECBAgAABAvkSEIDkq19WS6CwAvu3Uvn06dNbGe38UGWQsvnmm3f+Is4gQIAA
AQIECBAgQIAAAQIECBAgQKCmBAQgNdUOiyFAoC2BzUoHdqo4+PDDD1eMdH536dKlMW3atLITDzjg
gLL91nay0OSqq66KhQsXtnbYGAECBAgQIECAAAECBAgQIECAAAECq1hAALKKG+DrCRCoXuC4iqk3
3nhjTJ06tWK0c7sXXHBBzJ07t+ykgw8+uGy/cueSSy6J7bffPo477rjYaqutYsmSJZVT7BMgQIAA
AQIECBAgQIAAAQIECBAgsIoFBCCruAG+ngCB6gW+Xpo6bty4FSc0NjbGV7/61XjnnXdWjHXmj2ef
fTbOPPPMslO+8IUvxI477lg2Vrlz++23rxh68803oyeeRFlxQX8QIECAAAECBAgQIECAAAECBAgQ
INAjAgKQHmF0EQIEVoZA9h+syy67LHr37r3i6+bNm9f0JMb777+/YqyaP15//fU45phjYvHixSum
9+nTJy699NIV+239kYUezbc//vGPzXf9TYAAAQIECBAgQIAAAQIECBAgQIBADQgIQGqgCZZAgED1
Arvssktcd911sdpqq6046aabborRo0fHvffeu2KsvT+uvvrqGDVqVDz55JNl0y666KLYZpttysZa
21m0aFFrw8YIECBAgAABAgQIECBAgAABAgQIEKghAQFIDTXDUggQaF8ge9347373u1h33XWbfvqq
+ew5c+bEPvvsExMnToxrrrmmKdz48MMPm6ZkgcUf/vCHppeW77vvvk3nvv32281Pj3PPPTdOOumk
srG2dpYtW9bWIeMECBAgQIAAAQIECBAgQIAAAQIECNSIQF3pN/Qba2QtlkGAAIG2BerqYrPS0Zfa
ntHiSPaUyODBgyP7uav2/lNXV7r2oEGDWpzf1sBbb70VzUOQ7ImUI488sq3pxgkQIECAAAECBAgQ
IECAAAECBAgQWAUC//dD+qvgy30lAQIEOiPwUmcml+YuXbo0XnvttQ6MgJNjAABAAElEQVTPysKR
N954o8N5JhAgQIAAAQIECBAgQIAAAQIECBAgkB8BP4GVn15ZKQECNSqQPUFiI0CAAAECBAgQIECA
AAECBAgQIECgtgQEILXVD6shQCCHAiNGjMjhqi2ZAAECBAgQIECAAAECBAgQIECAQNoCfgIr7f6q
jkDSApMmTWp6IfqqLHLrrbeOHXbYYVUuwXcTIECAAAECBAgQIECAAAECBAgQINCKgJegt4JiiACB
GhQo/cxU5Q9NzZkzJzbddNMaXKwlESBAgAABAgQIECBAgAABAgQIECCwqgUEIKu6A76fAIHqBEoB
yFqlmYs+md2/f/9YuHBh9O7tQbbqAM0iQIAAAQIECBAgQIAAAQIECBAgUCwB7wApVr9VSyDXAoc0
W/1uu+0m/Gjm4U8CBAgQIECAAAECBAgQIECAAAECBMoFPAFS7mGPAIFaFSg9AfJhaW2/vvHGWLRo
URxxxBHRr1+/Wl2tdREgQIAAAQIECBAgQIAAAQIECBAgsIoFBCCruAG+ngCBKgVKAUjT1thY5Qmm
ESBAgAABAgQIECBAgAABAgQIECBQZAE/gVXk7qudAAECBAgQIECAAAECBAgQIECAAAECBAgkKiAA
SbSxyiJAgAABAgQIECBAgAABAgQIECBAgAABAkUWEIAUuftqJ0CAAAECBAgQIECAAAECBAgQIECA
AAECiQoIQBJtrLIIECBAgAABAgQIECBAgAABAgQIECBAgECRBQQgRe6+2gkQIECAAAECBAgQIECA
AAECBAgQIECAQKICApBEG6ssAgQIECBAgAABAgQIECBAgAABAgQIECBQZAEBSJG7r3YCBAgQIECA
AAECBAgQIECAAAECBAgQIJCogAAk0cYqiwABAgQIECBAgAABAgQIECBAgAABAgQIFFlAAFLk7qud
AAECBAgQIECAAAECBAgQIECAAAECBAgkKiAASbSxyiJAgAABAgQIECBAgAABAgQIECBAgAABAkUW
EIAUuftqJ0CAAAECBAgQIECAAAECBAgQIECAAAECiQoIQBJtrLIIECBAgAABAgQIECBAgAABAgQI
ECBAgECRBXoXuXi1EyCQT4Fnnnkm7rzzzmhoaIj6+voYN25cTJgwIfr165fPgqyaAAECBAgQIECA
AAECBAgQIECAAIEeF6hrLG09flUXJECAQE8L1NU1XfGC88+P008/PT7++OOyb9h2223j+uuvj9Gj
R5eN2yFAgAABAgQIECBAgAABAgQIECBAoJgCApBi9l3VBPInUApAbiit+oh2Vj5s2LCYMWNGrLnm
mu3McogAAQIECBAgQIAAAQIECBAgQIAAgSIIeAdIEbqsRgIJCCwu1XBqB3XMmzcvLrjggg5mOUyA
AAECBAgQIECAAAECBAgQIECAQBEEBCBF6LIaCSQg8HyphleqqOOee+6pYpYpBAgQIECAAAECBAgQ
IECAAAECBAikLiAASb3D6iOQiMBzVdaR/QSWjQABAgQIECBAgAABAgQIECBAgAABAgIQ9wABArkQ
WFrlKpcurXZmlRc0jQABAgQIECBAgAABAgQIECBAgACBXAoIQHLZNosmUDyBkVWWPHJktTOrvKBp
BAgQIECAAAECBAgQIECAAAECBAjkUkAAksu2WTSB4glkscbgKsrefffdq5hlCgECBAgQIECAAAEC
BAgQIECAAAECqQvUNZa21ItUHwECCQjU1cVVpTKOa6eUddddN2bNmhXrrbdeO7McIkCAAAECBAgQ
IECAAAECBAgQIECgCAKeAClCl9VIIBGBr5bq+OY3vxl1pTCkchsyZEjceOONwo9KGPsECBAgQIAA
AQIECBAgQIAAAQIECirgCZCCNl7ZBHInsDz0KD209tvf/jYmT54cDQ0NMXDgwBg7dmwcf/zxMXhw
NT+SlbvKLZgAAQIECBAgQIAAAQIECBAgQIAAgS4ICEC6gOYUAgRWgUCzAGQVfLuvJECAAAECBAgQ
IECAAAECBAgQIEAgZwJ+AitnDbNcAgQIECBAgAABAgQIECBAgAABAgQIECBAoGMBAUjHRmYQIECA
AAECBAgQIECAAAECBAgQIECAAAECORMQgOSsYZZLgAABAgQIECBAgAABAgQIECBAgAABAgQIdCwg
AOnYyAwCBAgQIECAAAECBAgQIECAAAECBAgQIEAgZwICkJw1zHIJECBAgAABAgQIECBAgAABAgQI
ECBAgACBjgUEIB0bmUGAAAECBAgQIECAAAECBAgQIECAAAECBAjkTEAAkrOGWS4BAgQIECBAgAAB
AgQIECBAgAABAgQIECDQsYAApGMjMwgQIECAAAECBAgQIECAAAECBAgQIECAAIGcCQhActYwyyVA
gAABAgQIECBAgAABAgQIECBAgAABAgQ6FhCAdGxkBgECBAgQIECAAAECBAgQIECAAAECBAgQIJAz
AQFIzhpmuQQIECBAgAABAgQIECBAgAABAgQIECBAgEDHAgKQjo3MIECAAAECBAgQIECAAAECBAgQ
IECAAAECBHImIADJWcMslwABAgQIECBAgAABAgQIECBAgAABAgQIEOhYQADSsZEZBAgQIECAAAEC
BAgQIECAAAECBAgQIECAQM4EeudsvZZLgACBVgWWLVsW06ZNi7vvvjseeuiheP311+ONN96I9957
L9Zbb70YPHhwDB8+PPbZZ5/Yb7/9YqONNmr1OgYJECBAgAABAgQIECBAgAABAgQIEEhDoK6xtKVR
iioIEEhaoK7uL+VV/Cdr6dKl8bOf/SzOOuusmDdvXtUEe++9d5x33nmx4447Vn2OiQQIECBAgAAB
AgQIECBAgAABAgQI5EdAAJKfXlkpgWILtBKAPPvss3HooYfGzJkzu2RTV7rmxIkT4/LLL4/+/ft3
6RpOIkCAAAECBAgQIECAAAECBAgQIECgNgUEILXZF6siQKBSoCIAueuuu2LChAnxzjvvVM7s9P7Y
sWPj9ttv97NYnZZzAgECBAgQIECAAAECBAgQIECAAIHaFRCA1G5vrIwAgeYCzQKQBx54ILKfsFqy
ZEnzGd36e9iwYfHYY481vSukWxdyMgECBAgQIECAAAECBAgQIECAAAECNSHQqyZWYREECBCoUuC1
116LI444otXwI/sZqz333DNOO+20+PWvfx077bRT2VW///3vx8iRI8vGlu9k7w858sgjI3uniI0A
AQIECBAgQIAAAQIECBAgQIAAgfwLCEDy30MVECiUwIknnhivv/56i5oPPPDAmDt3bkydOjXOOeec
OOCAA1q812PSpElN7wu5//77Y4899mhxjeXntjhggAABAgQIECBAgAABAgQIECBAgACB3AkIQHLX
MgsmUFyBhlLpt912WxnA6quvHj/84Q9j8uTJsd5665Uda2snCz/uueeeOOqoo1pMufDCC2PBggUt
xg0QIECAAAECBAgQIECAAAECBAgQIJAvAQFIvvpltQQKLXBeK9Wfe+65kT3Z0dmtT58+ce2118bJ
J59cduqiRYuaApWyQTsECBAgQIAAAQIECBAgQIAAAQIECOROwEvQc9cyCyZQTIElpZeg15dKf7dZ
+VtssUX87//+b/Tt27fZ6P/9mT3pkb0wffk2f/78WH/99ZfvNv2bvfNjm222iVmzZq0Y32CDDSJ7
14iNAAECBAgQIECAAAECBAgQIECAAIH8CngCJL+9s3IChRKYVqq2efiRFX/eeee1GX5Ui7PaaqvF
WWedVTY9e8fIs88+WzZmhwABAgQIECBAgAABAgQIECBAgACBfAkIQPLVL6slUFiB31dUvvbaa8eh
hx5aMdq13QkTJsSoUaPKTs5elG4jQIAAAQIECBAgQIAAAQIECBAgQCC/AgKQ/PbOygkUSuDVimq3
3HLLipGu7/bq1Ss+97nPlV3gqaeeKtu3Q4AAAQIECBAgQIAAAQIECBAgQIBAvgQEIPnql9USKKzA
mxWV92QAkl16q622KvuGN9+s/Mayw3YIECBAgAABAgQIECBAgAABAgQIEKhxAQFIjTfI8ggQ+IvA
2xUQApAKELsECBAgQIAAAQIECBAgQIAAAQIECJQJCEDKOOwQIFCrAutWLGzAgAEVI93bHTRoUNkF
3nvvvbJ9OwQIECBAgAABAgQIECBAgAABAgQI5EtAAJKvflktgcIKDK+o/KWXXqoY6d7uCy+8UHaB
+vr6sn07BAgQIECAAAECBAgQIECAAAECBAjkS0AAkq9+WS2BwgpsWlH5nDlzKka6tztjxoyyC1Q+
EVJ20A4BAgQIECBAgAABAgQIECBAgAABAjUvIACp+RZZIAECmUDlEyCzZ8/uUZiGhoay6w0fXvmN
ZYftECBAgAABAgQIECBAgAABAgQIECBQ4wICkBpvkOURIPAXgU0rIF588cWYOXNmxWjXdp944omY
MmVK2cl77rln2b4dAgQIECBAgAABAgQIECBAgAABAgTyJSAAyVe/rJZAYQWGlSqvq6j+uuuuqxjp
2u7JJ58cy5YtW3Fynz59Yvz48Sv2/UGAAAECBAgQIECAAAECBAgQIECAQP4EBCD565kVEyikwOql
qj9TUXlPBCD/8R//EQ8++GDZlb/0pS/FgAEDysbsECBAgAABAgQIECBAgAABAgQIECCQLwEBSL76
ZbUECi1wTEX12XtAHn300YrR6nY/+uijOO644+LUU08tO6Guri5OO+20sjE7BAgQIECAAAECBAgQ
IECAAAECBAjkT0AAkr+eWTGBwgocXqq8b9++ZfX/+Mc/LtvvaOeNN96Iq6++Oj772c/GVVdd1WL6
hAkTYrvttmsxboAAAQIECBAgQIAAAQIECBAgQIAAgXwJ1DWWtnwt2WoJECikQOnJjGw7pPTzVLfc
cssKgtVXXz1efvnlWH/99VeMLf9jjz32iAceeGD5bowbNy6eeuqpsvd9rDhY+mOLLbaIxx9/PNZZ
Z53mw/4mQIAAAQIECBAgQIAAAQIECBAgQCCHAp4AyWHTLJlAkQWOOab8h7Cyn7K68sorWyXp3bt3
2fgTTzzRZvix9tprx0033ST8KBOzQ4AAAQIECBAgQIAAAQIECBAgQCC/AgKQ/PbOygkUUmD//feP
+vr6stqz4KK1ba211mptuMXYBhtsEL/97W9j7NixLY4ZIECAAAECBAgQIECAAAECBAgQIEAgnwIC
kHz2zaoJFFYgewfI2WefXVb/008/HYsXLy4by3Yqg5IWE0oD2c9kPfzww8KP1nCMESBAgAABAgQI
ECBAgAABAgQIEMixgAAkx82zdAJFFfjGN74R2ZMgy7e99967xcvRs2N77bXX8ikt/s2e9rjxxhvj
/vvvj80226zFcQMECBAgQIAAAQIECBAgQIAAAQIECORbwEvQ890/qydQHIFPXoIejY1NNS9dujTu
uOOOePXVV+Poo4+OAQMGtLBYtmxZXHXVVfHII4/EkiVLYqONNophw4bFfvvtJ/RooWWAAAECBAgQ
IECAAAECBAgQIECAQFoCApC0+qkaAukKVAQg6RaqMgIECBAgQIAAAQIECBAgQIAAAQIEekLAT2D1
hKJrECBAgAABAgQIECBAgAABAgQIECBAgAABAjUlIACpqXZYDAECBAgQIECAAAECBAgQIECAAAEC
BAgQINATAgKQnlB0DQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCmBAQgNdUOiyFAgAABAgQIECBA
gAABAgQIECBAgAABAgR6QkAA0hOKrkGAAAECBAgQIECAAAECBAgQIECAAAECBAjUlIAApKbaYTEE
CBAgQIAAAQIECBAgQIAAAQIECBAgQIBATwgIQHpC0TUIECBAgAABAgQIECBAgAABAgQIECBAgACB
mhIQgNRUOyyGAAECBAgQIECAAAECBAgQIECAAAECBAgQ6AkBAUhPKLoGAQIECBAgQIAAAQIECBAg
QIAAAQIECBAgUFMCApCaaofFECBAgAABAgQIECBAgAABAgQIECBAgAABAj0hIADpCUXXIECAAAEC
BAgQIECAAAECBAgQIECAAAECBGpKQABSU+2wGAIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAnBAQg
PaHoGgQIECBAgAABAgQIECBAgAABAgQIECBAgEBNCQhAaqodFkOAAAECBAgQIECAAAECBAgQIECA
AAECBAj0hEDvnriIaxAgQGBlCjz77LMxZcqUaGhoiPr6+hg3blwcfvjhscYaa6zMZfguAgQIECBA
gAABAgQIECBAgAABAgRqWKCusbTV8PosjQABAn8RqKtr+veiCy+M733ve7F48eIymdGjR8f1118f
2267bdm4HQIECBAgQIAAAQIECBAgQIAAAQIEiikgAClm31VNIH8CpQDkxtKqJ7Sz8uHDh8eMGTOi
X79+7cxyiAABAgQIECBAgAABAgQIECBAgACBIgh4B0gRuqxGAgkIfFyq4dQO6pg7d25ccMEFHcxy
mAABAgQIECBAgAABAgQIECBAgACBIggIQIrQZTUSSEDguVINL1dRx913313FLFMIECBAgAABAgQI
ECBAgAABAgQIEEhdQACSeofVRyARgSwAqWabOXNmNdPMIUCAAAECBAgQIECAAAECBAgQIEAgcQEB
SOINVh6BVASWVlnIkiVLqpxpGgECBAgQIECAAAECBAgQIECAAAECKQsIQFLurtoIJCQwsspaRowY
UeVM0wgQIECAAAECBAgQIECAAAECBAgQSFlAAJJyd9VGICGBLABZv4p6dt999ypmmUKAAAECBAgQ
IECAAAECBAgQIECAQOoCdY2lLfUi1UeAQAICdXVxZamMr7dTyrrrrhvPP/98DBo0qJ1ZDhEgQIAA
AQIECBAgQIAAAQIECBAgUAQBT4AUoctqJJCIwNdKdZxyyilRVwpDKrfBgwfHDTfcIPyohLFPgAAB
AgQIECBAgAABAgQIECBAoKACngApaOOVTSB3AstDj9JDa1OnTo3JkydHQ0NDDBw4MMaOHRsnnHBC
DBkyJHdlWTABAgQIECBAgAABAgQIECBAgAABAp+OgADk03F1VQIEelqgWQDS05d2PQIECBAgQIAA
AQIECBAgQIAAAQIE0hPwE1jp9VRFBAgQIECAAAECBAgQIECAAAECBAgQIECg8AICkMLfAgAIECBA
gAABAgQIECBAgAABAgQIECBAgEB6AgKQ9HqqIgIECBAgQIAAAQIECBAgQIAAAQIECBAgUHgBAUjh
bwEABAgQIECAAAECBAgQIECAAAECBAgQIEAgPYH/z74dGzEMw0AQTNx/y3YTH5yJbQADLpTdSAB5
76ZeRIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgsIIOc/AQAECBAgQIAAAQIECBAgQIAAAQIECBAg
QOA9AQHkvZt6EQECBAgQIECAAAECBAgQIECAAAECBAgQOC8ggJz/BAAQIECAAAECBAgQIECAAAEC
BAgQIECAAIH3BASQ927qRQQIECBAgAABAgQIECBAgAABAgQIECBA4LyAAHL+EwBAgAABAgQIECBA
gAABAgQIECBAgAABAgTeExBA3rupFxEgQIAAAQIECBAgQIAAAQIECBAgQIAAgfMCAsj5TwAAAQIE
CBAgQIAAAQIECBAgQIAAAQIECBB4T0AAee+mXkSAAAECBAgQIECAAAECBAgQIECAAAECBM4LCCDn
PwEABAgQIECAAAECBAgQIECAAAECBAgQIEDgPQEB5L2behEBAgQIECBAgAABAgQIECBAgAABAgQI
EDgvIICc/wQAECBAgAABAgQIECBAgAABAgQIECBAgACB9wQEkPdu6kUECBAgQIAAAQIECBAgQIAA
AQIECBAgQOC8gABy/hMAQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE3hMQQN67qRcRIECAAAECBAgQ
IECAAAECBAgQIECAAIHzAgLI+U8AAAECBAgQIECAAAECBAgQIECAAAECBAgQeE9AAHnvpl5EgAAB
AgQIECBAgAABAgQIECBAgAABAgTOCwgg5z8BAAQIECBAgAABAgQIECBAgAABAgQIECBA4D0BAeS9
m3oRAQIECBAgQIAAAQIECBAgQIAAAQIECBA4LyCAnP8EABAgQIAAAQIECBAgQIAAAQIECBAgQIAA
gfcEBJD3bupFBAgQIECAAAECBAgQIECAAAECBAgQIEDgvIAAcv4TAECAAAECBAgQIECAAAECBAgQ
IECAAAECBN4TEEDeu6kXESBAgAABAgQIECBAgAABAgQIECBAgACB8wICyPlPAAABAgQIECBAgAAB
AgQIECBAgAABAgQIEHhPQAB576ZeRIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgsIIOc/AQAECBAg
QIAAAQIECBAgQIAAAQIECBAgQOA9AQHkvZt6EQECBAgQIECAAAECBAgQIECAAAECBAgQOC8ggJz/
BAAQIECAAAECBAgQIECAAAECBAgQIECAAIH3BASQ927qRQQIECBAgAABAgQIECBAgAABAgQIECBA
4LyAAHL+EwBAgAABAgQIECBAgAABAgQIECBAgAABAgTeExBA3rupFxEgQIAAAQIECBAgQIAAAQIE
CBAgQIAAgfMCAsj5TwAAAQIECBAgQIAAAQIECBAgQIAAAQIECBB4T0AAee+mXkSAAAECBAgQIECA
AAECBAgQIECAAAECBM4LCCDnPwEABAgQIECAAAECBAgQIECAAAECBAgQIEDgPQEB5L2behEBAgQI
ECBAgAABAgQIECBAgAABAgQIEDgvIICc/wQAECBAgAABAgQIECBAgAABAgQIECBAgACB9wQEkPdu
6kUECBAgQIAAAQIECBAgQIAAAQIECBAgQOC8gABy/hMAQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE
3hMQQN67qRcRIECAAAECBAgQIECAAAECBAgQIECAAIHzAgLI+U8AAAECBAgQIECAAAECBAgQIECA
AAECBAgQeE9AAHnvpl5EgAABAgQIECBAgAABAgQIECBAgAABAgTOCwgg5z8BAAQIECBAgAABAgQI
ECBAgAABAgQIECBA4D0BAeS9m3oRAQIECBAgQIAAAQIECBAgQIAAAQIECBA4LyCAnP8EABAgQIAA
AQIECBAgQIAAAQIECBAgQIAAgfcEBJD3bupFBAgQIECAAAECBAgQIECAAAECBAgQIEDgvIAAcv4T
AECAAAECBAgQIECAAAECBAgQIECAAAECBN4TEEDeu6kXESBAgAABAgQIECBAgAABAgQIECBAgACB
8wICyPlPAAABAgQIECBAgAABAgQIECBAgAABAgQIEHhPQAB576ZeRIAAAQIECBAgQIAAAQIECBAg
QIAAAQIEzgsIIOc/AQAECBAgQIAAAQIECBAgQIAAAQIECBAgQOA9AQHkvZt6EQECBAgQIECAAAEC
BAgQIECAAAECBAgQOC8ggJz/BAAQIECAAAECBAgQIECAAAECBAgQIECAAIH3BASQ927qRQQIECBA
gAABAgQIECBAgAABAgQIECBA4LyAAHL+EwBAgAABAgQIECBAgAABAgQIECBAgAABAgTeExBA3rup
FxEgQIAAAQIECBAgQIAAAQIECBAgQIAAgfMCAsj5TwAAAQIECBAgQIAAAQIECBAgQIAAAQIECBB4
T0AAee+mXkSAAAECBAgQIECAAAECBAgQIECAAAECBM4LCCDnPwEABAgQIECAAAECBAgQIECAAAEC
BAgQIEDgPQEB5L2behEBAgQIECBAgAABAgQIECBAgAABAgQIEDgvIICc/wQAECBAgAABAgQIECBA
gAABAgQIECBAgACB9wQEkPdu6kUECBAgQIAAAQIECBAgQIAAAQIECBAgQOC8gABy/hMAQIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIE3hMQQN67qRcRIECAAAECBAgQIECAAAECBAgQIECAAIHzAgLI+U8A
AAECBAgQIECAAAECBAgQIECAAAECBAgQeE9AAHnvpl5EgAABAgQIECBAgAABAgQIECBAgAABAgTO
Cwgg5z8BAAQIECBAgAABAgQIECBAgAABAgQIECBA4D0BAeS9m3oRAQIECBAgQIAAAQIECBAgQIAA
AQIECBA4LyCAnP8EABAgQIAAAQIECBAgQIAAAQIECBAgQIAAgfcEBJD3bupFBAgQIECAAAECBAgQ
IECAAAECBAgQIEDgvIAAcv4TAECAAAECBAgQIECAAAECBAgQIECAAAECBN4TEEDeu6kXESBAgAAB
AgQIECBAgAABAgQIECBAgACB8wICyPlPAAABAgQIECBAgAABAgQIECBAgAABAgQIEHhPQAB576Ze
RIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgsIIOc/AQAECBAgQIAAAQIECBAgQIAAAQIECBAgQOA9
AQHkvZt6EQECBAgQIECAAAECBAgQIECAAAECBAgQOC8ggJz/BAAQIECAAAECBAgQIECAAAECBAgQ
IECAAIH3BASQ927qRQQIECBAgAABAgQIECBAgAABAgQIECBA4LyAAHL+EwBAgAABAgQIECBAgAAB
AgQIECBAgAABAgTeExBA3rupFxEgQIAAAQIECBAgQIAAAQIECBAgQIAAgfMCAsj5TwAAAQIECBAg
QIAAAQIECBAgQIAAAQIECBB4T0AAee+mXkSAAAECBAgQIECAAAECBAgQIECAAAECBM4LCCDnPwEA
BAgQIECAAAECBAgQIECAAAECBAgQIEDgPQEB5L2behEBAgQIECBAgAABAgQIECBAgAABAgQIEDgv
IICc/wQAECBAgAABAgQIECBAgAABAgQIECBAgACB9wQEkPdu6kUECBAgQIAAAQIECBAgQIAAAQIE
CBAgQOC8gABy/hMAQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE3hMQQN67qRcRIECAAAECBAgQIECA
AAECBAgQIECAAIHzAgLI+U8AAAECBAgQIECAAAECBAgQIECAAAECBAgQeE9AAHnvpl5EgAABAgQI
ECBAgAABAgQIECBAgAABAgTOCwgg5z8BAAQIECBAgAABAgQIECBAgAABAgQIECBA4D0BAeS9m3oR
AQIECBAgQIAAAQIECBAgQIAAAQIECBA4LyCAnP8EABAgQIAAAQIECBAgQIAAAQIECBAgQIAAgfcE
BJD3bupFBAgQIECAAAECBAgQIECAAAECBAgQIEDgvIAAcv4TAECAAAECBAgQIECAAAECBAgQIECA
AAECBN4TEEDeu6kXESBAgAABAgQIECBAgAABAgQIECBAgACB8wICyPlPAAABAgQIECBAgAABAgQI
ECBAgAABAgQIEHhPQAB576ZeRIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgsIIOc/AQAECBAgQIAA
AQIECBAgQIAAAQIECBAgQOA9AQHkvZt6EQECBAgQIECAAAECBAgQIECAAAECBAgQOC8ggJz/BAAQ
IECAAAECBAgQIECAAAECBAgQIECAAIH3BASQ927qRQQIECBAgAABAgQIECBAgAABAgQIECBA4LyA
AHL+EwBAgAABAgQIECBAgAABAgQIECBAgAABAgTeExBA3rupFxEgQIAAAQIECBAgQIAAAQIECBAg
QIAAgfMCAsj5TwAAAQIECBAgQIAAAQIECBAgQIAAAQIECBB4T0AAee+mXkSAAAECBAgQIECAAAEC
BAgQIECAAAECBM4LCCDnPwEABAgQIECAAAECBAgQIECAAAECBAgQIEDgPQEB5L2behEBAgQIECBA
gAABAgQIECBAgAABAgQIEDgvIICc/wQAECBAgAABAgQIECBAgAABAgQIECBAgACB9wQEkPdu6kUE
CBAgQIAAAQIECBAgQIAAAQIECBAgQOC8gABy/hMAQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE3hMQ
QN67qRcRIECAAAECBAgQIECAAAECBAgQIECAAIHzAgLI+U8AAAECBAgQIECAAAECBAgQIECAAAEC
BAgQeE9AAHnvpl5EgAABAgQIECBAgAABAgQIECBAgAABAgTOCwgg5z8BAAQIECBAgAABAgQIECBA
gAABAgQIECBA4D0BAeS9m3oRAQIECBAgQIAAAQIECBAgQIAAAQIECBA4LyCAnP8EABAgQIAAAQIE
CBAgQIAAAQIECBAgQIAAgfcEBJD3bupFBAgQIECAAAECBAgQIECAAAECBAgQIEDgvIAAcv4TAECA
AAECBAgQIECAAAECBAgQIECAAAECBN4TEEDeu6kXESBAgAABAgQIECBAgAABAgQIECBAgACB8wIC
yPlPAAABAgQIECBAgAABAgQIECBAgAABAgQIEHhPQAB576ZeRIAAAQIECBAgQIAAAQIECBAgQIAA
AQIEzgsIIOc/AQAECBAgQIAAAQIECBAgQIAAAQIECBAgQOA9AQHkvZt6EQECBAgQIECAAAECBAgQ
IECAAAECBAgQOC8ggJz/BAAQIECAAAECBAgQIECAAAECBAgQIECAAIH3BASQ927qRQQIECBAgAAB
AgQIECBAgAABAgQIECBA4LyAAHL+EwBAgAABAgQIECBAgAABAgQIECBAgAABAgTeExBA3rupFxEg
QIAAAQIECBAgQIAAAQIECBAgQIAAgfMCAsj5TwAAAQIECBAgQIAAAQIECBAgQIAAAQIECBB4T0AA
ee+mXkSAAAECBAgQIECAAAECBAgQIECAAAECBM4LCCDnPwEABAgQIECAAAECBAgQIECAAAECBAgQ
IEDgPQEB5L2behEBAgQIECBAgAABAgQIECBAgAABAgQIEDgvIICc/wQAECBAgAABAgQIECBAgAAB
AgQIECBAgACB9wQEkPdu6kUECBAgQIAAAQIECBAgQIAAAQIECBAgQOC8gABy/hMAQIAAAQIECBAg
QIAAAQIECBAgQIAAAQIE3hMQQN67qRcRIECAAAECBAgQIECAAAECBAgQIECAAIHzAgLI+U8AAAEC
BAgQIECAAAECBAgQIECAAAECBAgQeE9AAHnvpl5EgAABAgQIECBAgAABAgQIECBAgAABAgTOCwgg
5z8BAAQIECBAgAABAgQIECBAgAABAgQIECBA4D0BAeS9m3oRAQIECBAgQIAAAQIECBAgQIAAAQIE
CBA4LyCAnP8EABAgQIAAAQIECBAgQIAAAQIECBAgQIAAgfcEBJD3bupFBAgQIECAAAECBAgQIECA
AAECBAgQIEDgvIAAcv4TAECAAAECBAgQIECAAAECBAgQIECAAAECBN4TEEDeu6kXESBAgAABAgQI
ECBAgAABAgQIECBAgACB8wICyPlPAAABAgQIECBAgAABAgQIECBAgAABAgQIEHhPQAB576ZeRIAA
AQIECBAgQIAAAQIECBAgQIAAAQIEzgsIIOc/AQAECBAgQIAAAQIECBAgQIAAAQIECBAgQOA9AQHk
vZt6EQECBAgQIECAAAECBAgQIECAAAECBAgQOC/wOS8AgACB/xD4fv9jT1sSIECAAAECBAgQIECA
AAECBAgQIJAQ8AdI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAEC
BAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAA
AQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLI
UtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQ
IEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIE
CBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAAB
AgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECA
AAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCA
JM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAA
AQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBA
gAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQ
IECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIE
CBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkg
gCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECA
AAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAg
QIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQI
ECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkC
BAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBIC
AkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIE
CBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAAB
AgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECA
AAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0i
QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSW
AgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAEC
BAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAA
AQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBA
gAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyW
IECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAg
ISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAg
QIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQI
ECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAEC
BAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLT
LAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBA
YCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQ
IECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIE
CBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAAB
AgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTO
YAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAEC
BBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAA
AQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBA
gAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQ
IECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAs
Nc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAAB
AgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECA
AAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAg
QIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQI
ECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI
4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQ
IEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIE
CBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAAB
AgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCA
AAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgIC
yFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQI
ECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAEC
BAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAA
AQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBA
gAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEg
gCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECA
AAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAg
QIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQI
ECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywC
BAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAp
IIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBA
gAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQ
IECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJ
AgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQS
AgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAEC
BAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAA
AQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBA
gAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXN
IkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE
lgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAAB
AgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECA
AAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAg
QIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIM
liBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBA
ICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQ
IECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIE
CBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAAB
AgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS
0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAg
QGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQI
ECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAEC
BAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAA
AQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAk
zmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAAB
AgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECA
AAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAg
QIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQI
ECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCA
LDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAA
AQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBA
gAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQ
IECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIE
CBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgIC
SOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQI
ECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAEC
BAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAA
AQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJA
gAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYC
AshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIE
CBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAAB
AgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECA
AAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYg
QIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAh
IIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBA
gAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQ
IECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIEEgICw87kGwAAMgxJREFUSOIMliBAgAABAgQIECBAgAABAgQIECBA
gAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQ
IECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJ
AgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQS
AgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAEC
BAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAA
AQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBA
gAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXN
IkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE
lgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAAB
AgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECA
AAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAg
QIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIM
liBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBA
ICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQ
IECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIE
CBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAAB
AgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS
0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAg
QGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQI
ECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAEC
BAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAA
AQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAk
zmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAAB
AgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECA
AAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAg
QIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQI
ECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCA
LDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAA
AQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBA
gAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQ
IECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIE
CBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgIC
SOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQI
ECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAEC
BAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAA
AQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJA
gAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYC
AshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIE
CBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAAB
AgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECA
AAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYg
QIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAh
IIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBA
gAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQ
IECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMs
AgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBg
KSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAg
QIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQI
ECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAEC
BAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5g
CQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE
EgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAAB
AgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECA
AAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAg
QIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1
zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAEC
BJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAA
AQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBA
gAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQ
IECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkji
DJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAg
QCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQI
ECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAEC
BAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAA
AQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLI
UtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQ
IEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIE
CBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAAB
AgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECA
AAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCA
JM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAA
AQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBA
gAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQ
IECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIE
CBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkg
gCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECA
AAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAg
QIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQI
ECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkC
BAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBIC
AkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIE
CBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAAB
AgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECA
AAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0i
QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSW
AgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAEC
BAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAA
AQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBA
gAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyW
IECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAg
ISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAg
QIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQI
ECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAEC
BAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLT
LAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBA
YCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQ
IECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIE
CBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAAB
AgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTO
YAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAEC
BBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAA
AQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBA
gAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQ
IECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAs
Nc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAAB
AgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECA
AAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAg
QIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQI
ECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI
4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQ
IEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIE
CBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAAB
AgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCA
AAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgIC
yFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQI
ECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAEC
BAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAA
AQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBA
gAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEg
gCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECA
AAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAg
QIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQI
ECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywC
BAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAp
IIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBA
gAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQ
IECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIE
CBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJ
AgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQS
AgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAEC
BAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAA
AQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBA
gAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXN
IkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE
lgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAAB
AgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECA
AAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAg
QIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIM
liBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBA
ICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQ
IECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIE
CBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAAB
AgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS
0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAg
QGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQI
ECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAEC
BAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAA
AQIECBAgQIAAAQIECBAgQIAAAQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAk
zmAJAgQIECBAgAABAgQIECBAgAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAAB
AgQSAgJI4gyWIECAAAECBAgQIECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECA
AAECBAgQIEAgISCAJM5gCQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAg
QIAAAQIECBAgQIAAAQIEEgICSOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQI
ECBAgAABAgQIECBAgAABAgQIECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCA
LDXNIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICAkjiDJYgQIAAAQIECBAgQIAAAQIECBAgQIAA
AQIElgICyFLTLAIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAhIIAkzmAJAgQIECBAgAABAgQIECBA
gAABAgQIECBAYCkggCw1zSJAgAABAgQIECBAgAABAgQIECBAgAABAgQSAgJI4gyWIECAAAECBAgQ
IECAAAECBAgQIECAAAECBJYCAshS0ywCBAgQIECAAAECBAgQIECAAAECBAgQIEAgISCAJM5gCQIE
CBAgQIAAAQIECBAgQIAAAQIECBAgQGApIIAsNc0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEgIC
SOIMliBAgAABAgQIECBAgAABAgQIECBAgAABAgSWAgLIUtMsAgQIECBAgAABAgQIECBAgAABAgQI
ECBAICEggCTOYAkCBAgQIECAAAECBAgQIECAAAECBAgQIEBgKSCALDXNIkCAAAECBAgQIECAAAEC
BH7t2TENAAAAwjD/rjHBsaMGCCknBAgQIECAAAECCQEHSGIGJQgQIECAAAECBAgQIECAAAECBAgQ
IECAAIGngAPkqSmLAAECBAgQIECAAAECBAgQIECAAAECBAgQSAg4QBIzKEGAAAECBAgQIECAAAEC
BAgQIECAAAECBAg8BRwgT01ZBAgQIECAAAECBAgQIECAAAECBAgQIECAQELAAZKYQQkCBAgQIECA
AAECBAgQIECAAAECBAgQIEDgKeAAeWrKIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICDpDEDEoQ
IECAAAECBAgQIECAAAECBAgQIECAAAECTwEHyFNTFgECBAgQIECAAAECBAgQIECAAAECBAgQIJAQ
cIAkZlCCAAECBAgQIECAAAECBAgQIECAAAECBAgQeAo4QJ6asggQIECAAAECBAgQIECAAAECBAgQ
IECAAIGEgAMkMYMSBAgQIECAAAECBAgQIECAAAECBAgQIECAwFPAAfLUlEWAAAECBAgQIECAAAEC
BAgQIECAAAECBAgkBBwgiRmUIECAAAECBAgQIECAAAECBAgQIECAAAECBJ4CDpCnpiwCBAgQIECA
AAECBAgQIECAAAECBAgQIEAgIeAAScygBAECBAgQIECAAAECBAgQIECAAAECBAgQIPAUcIA8NWUR
IECAAAECBAgQIECAAAECBAgQIECAAAECCQEHSGIGJQgQIECAAAECBAgQIECAAAECBAgQIECAAIGn
gAPkqSmLAAECBAgQIECAAAECBAgQIECAAAECBAgQSAg4QBIzKEGAAAECBAgQIECAAAECBAgQIECA
AAECBAg8BRwgT01ZBAgQIECAAAECBAgQIECAAAECBAgQIECAQELAAZKYQQkCBAgQIECAAAECBAgQ
IECAAAECBAgQIEDgKeAAeWrKIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICDpDEDEoQIECAAAEC
BAgQIECAAAECBAgQIECAAAECTwEHyFNTFgECBAgQIECAAAECBAgQIECAAAECBAgQIJAQcIAkZlCC
AAECBAgQIECAAAECBAgQIECAAAECBAgQeAo4QJ6asggQIECAAAECBAgQIECAAAECBAgQIECAAIGE
gAMkMYMSBAgQIECAAAECBAgQIECAAAECBAgQIECAwFPAAfLUlEWAAAECBAgQIECAAAECBAgQIECA
AAECBAgkBBwgiRmUIECAAAECBAgQIECAAAECBAgQIECAAAECBJ4CDpCnpiwCBAgQIECAAAECBAgQ
IECAAAECBAgQIEAgIeAAScygBAECBAgQIECAAAECBAgQIECAAAECBAgQIPAUcIA8NWURIECAAAEC
BAgQIECAAAECBAgQIECAAAECCQEHSGIGJQgQIECAAAECBAgQIECAAAECBAgQIECAAIGngAPkqSmL
AAECBAgQIECAAAECBAgQIECAAAECBAgQSAg4QBIzKEGAAAECBAgQIECAAAECBAgQIECAAAECBAg8
BRwgT01ZBAgQIECAAAECBAgQIECAAAECBAgQIECAQELAAZKYQQkCBAgQIECAAAECBAgQIECAAAEC
BAgQIEDgKeAAeWrKIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICDpDEDEoQIECAAAECBAgQIECA
AAECBAgQIECAAAECTwEHyFNTFgECBAgQIECAAAECBAgQIECAAAECBAgQIJAQcIAkZlCCAAECBAgQ
IECAAAECBAgQIECAAAECBAgQeAo4QJ6asggQIECAAAECBAgQIECAAAECBAgQIECAAIGEgAMkMYMS
BAgQIECAAAECBAgQIECAAAECBAgQIECAwFPAAfLUlEWAAAECBAgQIECAAAECBAgQIECAAAECBAgk
BBwgiRmUIECAAAECBAgQIECAAAECBAgQIECAAAECBJ4CDpCnpiwCBAgQIECAAAECBAgQIECAAAEC
BAgQIEAgIeAAScygBAECBAgQIECAAAECBAgQIECAAAECBAgQIPAUcIA8NWURIECAAAECBAgQIECA
AAECBAgQIECAAAECCQEHSGIGJQgQIECAAAECBAgQIECAAAECBAgQIECAAIGngAPkqSmLAAECBAgQ
IECAAAECBAgQIECAAAECBAgQSAg4QBIzKEGAAAECBAgQIECAAAECBAgQIECAAAECBAg8BRwgT01Z
BAgQIECAAAECBAgQIECAAAECBAgQIECAQELAAZKYQQkCBAgQIECAAAECBAgQIECAAAECBAgQIEDg
KeAAeWrKIkCAAAECBAgQIECAAAECBAgQIECAAAECBBICDpDEDEoQIECAAAECBAgQIECAAAECBAgQ
IECAAAECTwEHyFNTFgECBAgQIECAAAECBAgQIECAAAECBAgQIJAQcIAkZlCCAAECBAgQIECAAAEC
BAgQIECAAAECBAgQeAo4QJ6asggQIECAAAECBAgQIECAAAECBAgQIECAAIGEgAMkMYMSBAgQIECA
AAECBAgQIECAAAECBAgQIECAwFPAAfLUlEWAAAECBAgQIECAAAECBAgQIECAAAECBAgkBBwgiRmU
IECAAAECBAgQIECAAAECBAgQIECAAAECBJ4CDpCnpiwCBAgQIECAAAECBAgQIECAAAECBAgQIEAg
IeAAScygBAECBAgQIECAAAECBAgQIECAAAECBAgQIPAUcIA8NWURIECAAAECBAgQIECAAAECBAgQ
IECAAAECCQEHSGIGJQgQIECAAAECBAgQIECAAAECBAgQIECAAIGngAPkqSmLAAECBAgQIECAAAEC
BAgQIECAAAECBAgQSAg4QBIzKEGAAAECBAgQIECAAAECBAgQIECAAAECBAg8BRwgT01ZBAgQIECA
AAECBAgQIECAAAECBAgQIECAQELAAZKYQQkCBAgQIECAAAECBAgQIECAAAECBAgQIEDgKeAAeWrK
IkCAAAECBAgQIECAAAECBAgQIECAAAECBBICDpDEDEoQIECAAAECBAgQIECAAAECBAgQIECAAAEC
TwEHyFNTFgECBAgQIECAAAECBAgQIECAAAECBAgQIJAQcIAkZlCCAAECBAgQIECAAAECBAgQIECA
AAECBAgQeAo4QJ6asggQIECAAAECBAgQIECAAAECBAgQIECAAIGEgAMkMYMSBAgQIECAAAECBAgQ
IECAAAECBAgQIECAwFPAAfLUlEWAAAECBAgQIECAAAECBAgQIECAAAECBAgkBBwgiRmUIECAAAEC
BAgQIECAAAECBAgQIECAAAECBJ4CDpCnpiwCBAgQIECAAAECBAgQIECAAAECBAgQIEAgIeAAScyg
BAECBAgQIECAAAECBAgQIECAAAECBAgQIPAUcIA8NWURIECAAAECBAgQIECAAAECBAgQIECAAAEC
CQEHSGIGJQgQIECAAAECBAgQIECAAAECBAgQIECAAIGngAPkqSmLAAECBAgQIECAAAECBAgQIECA
AAECBAgQSAg4QBIzKEGAAAECBAgQIECAAAECBAgQIECAAAECBAg8BRwgT01ZBAgQIECAAAECBAgQ
IECAAAECBAgQIECAQELAAZKYQQkCBAgQIECAAAECBAgQIECAAAECBAgQIEDgKeAAeWrKIkCAAAEC
BAgQIECAAAECBAgQIECAAAECBBICDpDEDEoQIECAAAECBAgQIECAAAECBAgQIECAAAECTwEHyFNT
FgECBAgQIECAAAECBAgQIECAAAECBAgQIJAQcIAkZlCCAAECBAgQIECAAAECBAgQIECAAAECBAgQ
eAo4QJ6asggQIECAAAECBAgQIECAAAECBAgQIECAAIGEgAMkMYMSBAgQIECAAAECBAgQIECAAAEC
BAgQIECAwFPAAfLUlEWAAAECBAgQIECAAAECBAgQIECAAAECBAgkBBwgiRmUIECAAAECBAgQIECA
AAECBAgQIECAAAECBJ4CDpCnpiwCBAgQIECAAAECBAgQIECAAAECBAgQIEAgIeAAScygBAECBAgQ
IECAAAECBAgQIECAAAECBAgQIPAUcIA8NWURIECAAAECBAgQIECAAAECBAgQIECAAAECCQEHSGIG
JQgQIECAAAECBAgQIECAAAECBAgQIECAAIGngAPkqSmLAAECBAgQIECAAAECBAgQIECAAAECBAgQ
SAg4QBIzKEGAAAECBAgQIECAAAECBAgQIECAAAECBAg8BRwgT01ZBAgQIECAAAECBAgQIECAAAEC
BAgQIECAQELAAZKYQQkCBAgQIECAAAECBAgQIECAAAECBAgQIEDgKeAAeWrKIkCAAAECBAgQIECA
AAECBAgQIECAAAECBBICDpDEDEoQIECAAAECBAgQIECAAAECBAgQIECAAAECTwEHyFNTFgECBAgQ
IECAAAECBAgQIECAAAECBAgQIJAQcIAkZlCCAAECBAgQIECAAAECBAgQIECAAAECBAgQeAo4QJ6a
sggQIECAAAECBAgQIECAAAECBAgQIECAAIGEgAMkMYMSBAgQIECAAAECBAgQIECAAAECBAgQIECA
wFPAAfLUlEWAAAECBAgQIECAAAECBAgQIECAAAECBAgkBBwgiRmUIECAAAECBAgQIECAAAECBAgQ
IECAAAECBJ4CDpCnpiwCBAgQIECAAAECBAgQIECAAAECBAgQIEAgIeAAScygBAECBAgQIECAAAEC
BAgQIECAAAECBAgQIPAUGJLJNIS88iE6AAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381721</attachid>
            <date>2019-10-23 13:26:15 -0700</date>
            <delta_ts>2019-10-23 16:43:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203247-20191023132614.patch</filename>
            <type>text/plain</type>
            <size>10291</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM3NDUwODk0YzVlN2Y2Mjdi
MjhmMDNmNTYzYjZiYTcxZDk3MzRkMTEuLmNjYzdjNWEyZmIwM2JmMWJhMDI2OGNkNGViNmNhMWFj
ZjYyYjIwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMTAtMjMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyAxM10gaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24uc3ZnIGlzIGZsYWt5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMyNDcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzUyMTI0MjkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJvdWdobHkgMSBpbiAzMDAwIHJ1bnMsIHRoaXMgdGVzdCBm
YWlscyBkdWUgdG8gYW4gaW1hZ2UgZGlmZiwgd2hlcmUgb25seSB0aGUgZXhwZWN0YXRpb24gb3Ig
dGVzdCBwYWdlIHNob3dzIGEKKyAgICAgICAgbmF0aXZlIHNlbGVjdGlvbiB2aWV3IG9uIGlPUy4g
Qm90aCB0aGUgdGVzdCBhbmQgZXhwZWN0YXRpb24gY3JlYXRlIERPTSBzZWxlY3Rpb25zIG9uIHRo
ZSBwYWdlLCB3aGljaCBpcyB0aGVuCisgICAgICAgIGZvbGxvd2VkIGJ5IGEgbmF0aXZlIHNlbGVj
dGlvbiB2aWV3IG9uIHRoZSBwYWdlIGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS4KKworICAg
ICAgICBUaGlzICJwb2ludCBpbiB0aGUgZnV0dXJlIiBkZXBlbmRzIG9uIGJvdGggV2ViS2l0IGlt
cGxlbWVudGF0aW9uIGRldGFpbHMgKGkuZS4gd2hlbiB0aGUgbmV4dCByZW1vdGUgbGF5ZXIgdHJl
ZQorICAgICAgICBjb21taXQgaGFwcGVucykgYXMgd2VsbCBhcyBVSUtpdCBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzIChmb3IgZXhhbXBsZSwgbWFueSBtZXRob2RzIGluIFVJVGV4dFNlbGVjdGlvblZp
ZXcgYW5kCisgICAgICAgIFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgd2lsbCBzY2hlZHVs
ZSBjaGFuZ2VzIHRvIFVJVmlldyBnZW9tZXRyeSB1c2luZyBhIHJ1bmxvb3AgdGltZXIsIGluc3Rl
YWQgb2YgYXBwbHlpbmcKKyAgICAgICAgdGhlIHVwZGF0ZXMgaW1tZWRpYXRlbHkpLiBCZWNhdXNl
IG9mIHRoZSBsYXR0ZXIsIGl0J3MgaW1wcmFjdGljYWwgdG8gZXhwZWN0IG5hdGl2ZSBzZWxlY3Rp
b24gdmlld3Mgb24gaU9TIHRvCisgICAgICAgIGFsd2F5cyBhcHBlYXIgb3Igbm90IGFwcGVhciBh
ZnRlciBmaW5pc2hpbmcgdGhpcyBsYXlvdXQgdGVzdC4KKworICAgICAgICBUbyBtaXRpZ2F0ZSB0
aGlzIHJhcmUgc291cmNlIG9mIGZsYWtpbmVzcywgd2UgYWRkIGEgbmV3IG1lY2hhbmlzbSB0byBX
S1dlYlZpZXcgdG8gc3VwcHJlc3MgdGV4dCBzZWxlY3Rpb25zIHVudGlsCisgICAgICAgIHRoZSBj
bGllbnQgaW52b2tlcyBhIGNvbXBsZXRpb24gYmxvY2ssIGFuZCB1c2UgaXQgd2hlbiBzbmFwc2hv
dHRpbmcgaU9TIFdLV2ViVmlld3MgZm9yIHRoZSBwdXJwb3NlcyBvZiByZWYgYW5kCisgICAgICAg
IHBpeGVsIHRlc3RpbmcuCisKKyAgICAgICAgTm90ZSB0aGF0IHdlIHN0aWxsIGhhdmUgYSBjb25z
aWRlcmFibGUgbnVtYmVyIG9mIGxheW91dCB0ZXN0cyB0aGF0IGluc3BlY3QgdGhlc2UgbmF0aXZl
IHNlbGVjdGlvbiB2aWV3cyBvbiBpT1MsCisgICAgICAgIGJ1dCB0aGV5IHdvcmsgYnkgd2FpdGlu
ZyB1bnRpbCB0aGUgbmF0aXZlIHNlbGVjdGlvbiB2aWV3cyByZWFjaCBhIHBhcnRpY3VsYXIgc3Rh
dGUgKGUuZy4gYnkgcG9sbGluZyBmb3IgdGhlCisgICAgICAgIG51bWJlciBvZiByYW5nZWQgc2Vs
ZWN0aW9uIHN1YnZpZXdzLCBvciB0aGUgcHJlc2VuY2Ugb2Ygc2VsZWN0aW9uIGhhbmRsZXMsIG9y
IHdhaXRpbmcgZm9yIGEgY2FyZXQgc2VsZWN0aW9uIHdpdGgKKyAgICAgICAgYSBnaXZlbiBnZW9t
ZXRyeSwgZXRjLiksIHdoaWNoIGVuc3VyZXMgdGhhdCB0aGV5IGFyZSByb2J1c3QgYWdhaW5zdCBz
dWJ0bGUgY2hhbmdlcyB0byB0aGUgdGltaW5nIG9mIHNlbGVjdGlvbgorICAgICAgICB1cGRhdGVz
IGluIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdGVtcG9yYXJpbHlTdXBwcmVzc1NlbGVj
dGlvbkZvclRlc3RpbmddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorCiAyMDE5LTEwLTIyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24tdW5pZmllZCBz
b3VyY2UgYnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCBiN2FiZmRmYjI1YjJkZjQ5YTA2ZGEyNTJiNzdjMTI4NGZmYjEwNTY4Li4x
MDVhYzY4ZDUwN2NhMTZmOTc0YTM2OGU3ZjYzOTNhZGI1OTQ5OGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTY4NjEsNiArNjg2MSwx
NCBAQCAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5Q2xlYXJTZWxlY3Rpb24KICAgICBbX2NvbnRlbnRW
aWV3IF9hY2Nlc3NpYmlsaXR5Q2xlYXJTZWxlY3Rpb25dOwogfQogCistIChkaXNwYXRjaF9ibG9j
a190KV90ZW1wb3JhcmlseVN1cHByZXNzU2VsZWN0aW9uRm9yVGVzdGluZworeworICAgIFtfY29u
dGVudFZpZXcgX3N0YXJ0U3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246V2Vi
S2l0OjpIaWRlRm9yVGVzdGluZ107CisgICAgcmV0dXJuIFtbW2NvbnRlbnRWaWV3ID0gV2Vha09i
akNQdHI8V0tDb250ZW50Vmlldz4oX2NvbnRlbnRWaWV3LmdldCgpKV0geworICAgICAgICBbY29u
dGVudFZpZXcgX3N0b3BTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJL
aXQ6OkhpZGVGb3JUZXN0aW5nXTsKKyAgICB9IGNvcHldIGF1dG9yZWxlYXNlXTsKK30KKwogLSAo
VUlWaWV3ICopX2Z1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcKIHsKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaAppbmRleCBjZTE2MDgyYTRjYWZhMzU0ZDczODdmOTI0MjRlNjQxZGZk
MDNlNDgwLi40NDU4YWZkMWY4YmRmZGY0MDA4MWVkODkzYzBkYTQ3YTkxNTU2YzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKQEAgLTUwNyw2ICs1MDcsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dL
UmVjdEVkZ2UpIHsKIC0gKFVJVmlldyAqKV9mdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IFdLX0FQ
SV9BVkFJTEFCTEUoaW9zKDEyLjApKTsKIAogLSAodm9pZClfdHJpZ2dlclN5c3RlbVByZXZpZXdB
Y3Rpb25PbkVsZW1lbnQ6KHVpbnQ2NF90KWVsZW1lbnRJRCBkb2N1bWVudDoodWludDY0X3QpZG9j
dW1lbnRJRCBwYWdlOih1aW50NjRfdClwYWdlSUQgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9T
X1RCQSkpOworLSAoZGlzcGF0Y2hfYmxvY2tfdClfdGVtcG9yYXJpbHlTdXBwcmVzc1NlbGVjdGlv
bkZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2NvbnRlbnRWaWV3SXNGaXJzdFJlc3BvbmRl
ciBXS19BUElfQVZBSUxBQkxFKGlvcygxMi4yKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDFh
Nzg0YTZlYjc3ZTk3ZTg3YjgxODRlMTc1NTYwMzU3OTMxODU0ZWMuLmJmZDczNjYyYWUyMjZhNzEz
NDg5MmI3NWEzMDgxZmNjOTcyZDM4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTE2OSw3ICsxNjksOCBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGVudW0gU3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFz
b24gOiB1aW50OF90IHsKICAgICBFZGl0YWJsZVJvb3RJc1RyYW5zcGFyZW50T3JGdWxseUNsaXBw
ZWQgPSAxIDw8IDAsCiAgICAgRm9jdXNlZEVsZW1lbnRJc1Rvb1NtYWxsID0gMSA8PCAxLAotICAg
IEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIKKyAgICBJbnRlcmFjdGlvbklzSGFwcGVu
aW5nID0gMSA8PCAyLAorICAgIEhpZGVGb3JUZXN0aW5nID0gMSA8PCAzLAogfTsKIAogc3RydWN0
IFdLU2VsZWN0aW9uRHJhd2luZ0luZm8gewpAQCAtNTU4LDYgKzU1OSw5IEBAIEZPUl9FQUNIX1BS
SVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9G
T1JfV0VCX1ZJRVcpCiAKIC0gKHZvaWQpX2RpZENoYW5nZUxpbmtQcmV2aWV3QXZhaWxhYmlsaXR5
OwogCistICh2b2lkKV9zdGFydFN1cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29u
OihXZWJLaXQ6OlN1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29uKXJlYXNvbjsKKy0gKHZv
aWQpX3N0b3BTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjooV2ViS2l0OjpT
dXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbilyZWFzb247CisKIEBlbmQKIAogQGludGVy
ZmFjZSBXS0NvbnRlbnRWaWV3IChXS1Rlc3RpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2M1ZWRlMWJlMWQ1ZWY4NmQwNGFkNmY2OTVkNzRj
Nzk1M2E1ZDhlZC4uODQ0ZGJmMTBiYTQyNWQyYjg1NmMyOTMxYzJhMTRlNzM2YjMyYTVlZSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE5LTEwLTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1MgMTNdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgt
c2VsZWN0aW9uLnN2ZyBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzMjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjEyNDI5Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgdGhl
IG5ldyBXS1dlYlZpZXcgU1BJIHRvIHN1cHByZXNzIG5hdGl2ZSBzZWxlY3Rpb24gdmlld3Mgb24g
aU9TIHdoaWxlIHRha2luZyBhIHNuYXBzaG90IGZvciB0ZXN0aW5nLiBTZWUKKyAgICAgICAgV2Vi
S2l0IENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdl
YlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UpOgorCiAyMDE5LTEwLTIzICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0dk9T
IGFuZCB3YXRjaE9TIGVuZ2luZWVyaW5nIGJ1aWxkcyBhZnRlciByMjUxMzc3CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KaW5kZXggNjYxZjI4
ZWIzZjZjZDIxYTkxZGZhNzBlM2VhZTczOThjNmIwOTY5YS4uMzY4YWU0YmQ1ZjgxMzk4ZGYwNDUx
ZTM5NjkxNTE4YTNkNGIzNDJjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1BsYXRmb3JtV2ViVmlld0lPUy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIFdLV2Vi
VmlldyAoRGV0YWlscykKQEAgLTMxOSw2ICszMjAsOCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
UGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAKKyAgICBhdXRvIHN0b3BTdXBwcmVzc2luZ1NlbGVjdGlvblZp
ZXdzID0gbWFrZUJsb2NrUHRyKFtwbGF0Zm9ybVZpZXcoKSBfdGVtcG9yYXJpbHlTdXBwcmVzc1Nl
bGVjdGlvbkZvclRlc3RpbmddKTsKKwogICAgIENHU2l6ZSB2aWV3U2l6ZSA9IG1fdmlldy5ib3Vu
ZHMuc2l6ZTsKICAgICBSRUxFQVNFX0FTU0VSVCh2aWV3U2l6ZS53aWR0aCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQodmlld1NpemUuaGVpZ2h0KTsKQEAgLTM0Miw4ICszNDUsNiBAQCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKICAgICB9
XTsKICAgICB3aGlsZSAoIWlzRG9uZSkKICAgICAgICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxv
b3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLQogI2Vsc2UKICAgICBDR0Zsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yID0gMjsgLy8gRklYTUU6IGhhcmRjb2RlIDJ4IGZvciBub3cuIEluIGZ1dHVy
ZSB3ZSBjb3VsZCByZXNwZWN0IDF4IGFuZCAzeCBhcyB3ZSBkbyBvbiBNYWMuCiAgICAgQ0FUcmFu
c2Zvcm0zRCB0cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGRldmljZVNjYWxlRmFj
dG9yLCBkZXZpY2VTY2FsZUZhY3RvciwgMSk7CkBAIC0zNjAsMTMgKzM2MSwxNSBAQCBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKICAg
ICBzaXplX3Qgcm93Qnl0ZXMgPSBDQVJlbmRlclNlcnZlckdldEJ1ZmZlclJvd0J5dGVzKGJ1ZmZl
cik7CiAKICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JTcGFjZSA9IENHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhE
YXRhKGJ1ZmZlciwgZGF0YSwgQ0FSZW5kZXJTZXJ2ZXJHZXRCdWZmZXJEYXRhU2l6ZShidWZmZXIp
LCByZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSkpOworICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoYnVmZmVyLCBkYXRhLCBDQVJlbmRlclNlcnZl
ckdldEJ1ZmZlckRhdGFTaXplKGJ1ZmZlciksIHJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKSk7CiAg
ICAgCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VD
cmVhdGUoYnVmZmVyV2lkdGgsIGJ1ZmZlckhlaWdodCwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCU3Bh
Y2UsIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIz
Mkhvc3QsIHByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVs
dCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGNnSW1hZ2UpOwotCi0gICAgcmV0dXJuIGNnSW1hZ2U7
CisgICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoYnVmZmVyV2lkdGgsIGJ1
ZmZlckhlaWdodCwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCU3BhY2UsIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIHByb3ZpZGVyLmdldCgp
LCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CiAjZW5kaWYKKyAgICBpZiAoc3RvcFN1cHByZXNzaW5nU2VsZWN0aW9uVmll
d3MpCisgICAgICAgIHN0b3BTdXBwcmVzc2luZ1NlbGVjdGlvblZpZXdzKCk7CisKKyAgICByZXR1
cm4gcmVzdWx0OwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBh
MmRjMjA3NzVkMzdhMzM3ZGZkOTMxMGI5M2I3YWIwYTFiZTZjYmI4Li5mMzRmZWM3NzkxM2VkMDJl
ZDQ3MWM0MGUzNzY1NTYzZDI2OTFjNDZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTAt
MjMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lP
UyAxM10gaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC90ZXh0cGF0aC1zZWxlY3Rpb24uc3ZnIGlz
IGZsYWt5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDMyNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUyMTI0MjkyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgZmFpbGluZyB0ZXN0
IGV4cGVjdGF0aW9uLiBTZWUgV2ViS2l0IENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTEwLTIy
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIHdwdC9j
c3MvY3NzLWltYWdlcy9ncmFkaWVudC9jb2xvci1zdG9wcy1wYXJzaW5nLmh0bWwgZmFpbHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkNjFm
NzBhNTE0ODAxNjk4N2M5ZDY2NWE5MDg1MTQwZmFmYjE3ZjRiLi4yMjJjY2U3NjcyN2Y2NzJlMGNi
ZGZkNzRlOGZjZDQzOTc2ODQ3MzAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzMyLDcgKzEzMzIsNiBAQCB3ZWJraXQub3JnL2IvMTk5
MDcxIFsgUmVsZWFzZSBdIGltcG9ydGVkL2JsaW5rL2Zhc3QvY3NzL3VzZXItc2VsZWN0LW5vbmUu
aHRtbCBbCiAKIHdlYmtpdC5vcmcvYi8xOTA4ODIgWyBEZWJ1ZyBdIGFuaW1hdGlvbnMvY2hhbmdl
LW9uZS1hbmltLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk5MTk2IFsg
UmVsZWFzZSBdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2VsZWN0aW9uLnN2
ZyBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTk5MTk2IFsgUmVsZWFz
ZSBdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvc2VsZWN0U3ViU3RyaW5nLTIuc3ZnIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5OTIxMyBbIFJlbGVhc2UgXSBp
bXBvcnRlZC9ibGluay9lZGl0aW5nL3NlbGVjdGlvbi9kZWxldGVGcm9tRG9jdW1lbnQtY3Jhc2gu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381754</attachid>
            <date>2019-10-23 16:43:11 -0700</date>
            <delta_ts>2019-10-23 20:25:41 -0700</delta_ts>
            <desc>Just hide UITextSelectionView.</desc>
            <filename>bug-203247-20191023164310.patch</filename>
            <type>text/plain</type>
            <size>6754</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDc5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2M1ZWRlMWJlMWQ1ZWY4NmQwNGFkNmY2OTVkNzRjNzk1
M2E1ZDhlZC4uNjQ3MzQ0YWU3NDAwOWEyMjU5NGRiOGI1NzU4ODc2OGZlYTgzNDk5MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE5LTEwLTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtpT1MgMTNdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvdGV4dHBhdGgtc2Vs
ZWN0aW9uLnN2ZyBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzMjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjEyNDI5Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFJvdWdobHkgMSBpbiAz
MDAwIHJ1bnMsIHRoaXMgdGVzdCBmYWlscyBkdWUgdG8gYW4gaW1hZ2UgZGlmZiwgd2hlcmUgb25s
eSB0aGUgZXhwZWN0YXRpb24gb3IgdGVzdCBwYWdlIHNob3dzIGEKKyAgICAgICAgbmF0aXZlIHNl
bGVjdGlvbiB2aWV3IG9uIGlPUy4gQm90aCB0aGUgdGVzdCBhbmQgZXhwZWN0YXRpb24gY3JlYXRl
IERPTSBzZWxlY3Rpb25zIG9uIHRoZSBwYWdlLCB3aGljaCBpcyB0aGVuCisgICAgICAgIGZvbGxv
d2VkIGJ5IGEgbmF0aXZlIHNlbGVjdGlvbiB2aWV3IG9uIHRoZSBwYWdlIGF0IHNvbWUgcG9pbnQg
aW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBUaGlzICJwb2ludCBpbiB0aGUgZnV0dXJlIiBkZXBl
bmRzIG9uIGJvdGggV2ViS2l0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgKGkuZS4gd2hlbiB0aGUg
bmV4dCByZW1vdGUgbGF5ZXIgdHJlZQorICAgICAgICBjb21taXQgaGFwcGVucykgYXMgd2VsbCBh
cyBVSUtpdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIChmb3IgZXhhbXBsZSwgbWFueSBtZXRob2Rz
IGluIFVJVGV4dFNlbGVjdGlvblZpZXcgYW5kCisgICAgICAgIFVJV0tUZXh0SW50ZXJhY3Rpb25B
c3Npc3RhbnQgd2lsbCBzY2hlZHVsZSBjaGFuZ2VzIHRvIFVJVmlldyBnZW9tZXRyeSB1c2luZyBh
IHJ1bmxvb3AgdGltZXIsIGluc3RlYWQgb2YgYXBwbHlpbmcKKyAgICAgICAgdGhlIHVwZGF0ZXMg
aW1tZWRpYXRlbHkpLiBCZWNhdXNlIG9mIHRoZSBsYXR0ZXIsIGl0J3MgaW1wcmFjdGljYWwgdG8g
ZXhwZWN0IG5hdGl2ZSBzZWxlY3Rpb24gdmlld3Mgb24gaU9TIHRvCisgICAgICAgIGFsd2F5cyBh
cHBlYXIgb3Igbm90IGFwcGVhciBhZnRlciBmaW5pc2hpbmcgdGhpcyBsYXlvdXQgdGVzdC4KKwor
ICAgICAgICBUbyBtaXRpZ2F0ZSB0aGlzIHJhcmUgc291cmNlIG9mIGZsYWtpbmVzcywgd2UgaGlk
ZSB0aGVzZSBuYXRpdmUgdGV4dCBzZWxlY3Rpb24gdmlld3Mgd2hlbiBzbmFwc2hvdHRpbmcgaU9T
CisgICAgICAgIFdLV2ViVmlld3MgZm9yIHRoZSBwdXJwb3NlcyBvZiByZWYgYW5kIHBpeGVsIHRl
c3RpbmcuCisKKyAgICAgICAgTm90ZSB0aGF0IHdlIHN0aWxsIGhhdmUgYSBjb25zaWRlcmFibGUg
bnVtYmVyIG9mIGxheW91dCB0ZXN0cyB0aGF0IGluc3BlY3QgdGhlc2UgbmF0aXZlIHNlbGVjdGlv
biB2aWV3cyBvbiBpT1MsCisgICAgICAgIGJ1dCB0aGV5IHdvcmsgYnkgd2FpdGluZyB1bnRpbCB0
aGUgbmF0aXZlIHNlbGVjdGlvbiB2aWV3cyByZWFjaCBhIHBhcnRpY3VsYXIgc3RhdGUgKGUuZy4g
YnkgcG9sbGluZyBmb3IgdGhlCisgICAgICAgIG51bWJlciBvZiByYW5nZWQgc2VsZWN0aW9uIHN1
YnZpZXdzLCBvciB0aGUgcHJlc2VuY2Ugb2Ygc2VsZWN0aW9uIGhhbmRsZXMsIG9yIHdhaXRpbmcg
Zm9yIGEgY2FyZXQgc2VsZWN0aW9uIHdpdGgKKyAgICAgICAgYSBnaXZlbiBnZW9tZXRyeSwgZXRj
LiksIHdoaWNoIGVuc3VyZXMgdGhhdCB0aGV5IGFyZSByb2J1c3QgYWdhaW5zdCBzdWJ0bGUgY2hh
bmdlcyB0byB0aGUgdGltaW5nIG9mIHNlbGVjdGlvbgorICAgICAgICB1cGRhdGVzIGluIHRoZSBV
SSBwcm9jZXNzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJW
aWV3SU9TLm1tOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90
SW1hZ2UpOgorCiAyMDE5LTEwLTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0dk9TIGFuZCB3YXRjaE9TIGVuZ2luZWVy
aW5nIGJ1aWxkcyBhZnRlciByMjUxMzc3CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KaW5kZXggNjYxZjI4ZWIzZjZjZDIxYTkxZGZhNzBlM2Vh
ZTczOThjNmIwOTY5YS4uMjg4NzdjY2JiMDdiY2M1YzExMDNiYjdkNGY5ZDIzMjQ4MDlhM2M4NyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9T
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKIEBpbnRlcmZhY2UgV0tX
ZWJWaWV3IChEZXRhaWxzKQogLSAoV0tQYWdlUmVmKV9wYWdlRm9yVGVzdGluZzsKQEAgLTMyMyw2
ICszMjQsMTMgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93
U25hcHNob3RJbWFnZSgpCiAgICAgUkVMRUFTRV9BU1NFUlQodmlld1NpemUud2lkdGgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHZpZXdTaXplLmhlaWdodCk7CiAKKyAgICBCT09MIHNob3VsZFVuaGlk
ZVNlbGVjdGlvblZpZXcgPSBOTzsKKyAgICBXZWFrT2JqQ1B0cjxVSVZpZXc+IHNlbGVjdGlvblZp
ZXcgPSBbcGxhdGZvcm1WaWV3KCkgdmFsdWVGb3JLZXlQYXRoOkAiX2N1cnJlbnRDb250ZW50Vmll
dy5pbnRlcmFjdGlvbkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3Il07CisgICAgaWYgKCFbc2VsZWN0
aW9uVmlldyBpc0hpZGRlbl0pIHsKKyAgICAgICAgc2hvdWxkVW5oaWRlU2VsZWN0aW9uVmlldyA9
IFlFUzsKKyAgICAgICAgW3NlbGVjdGlvblZpZXcgc2V0SGlkZGVuOllFU107CisgICAgfQorCiAj
aWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAg
IF9fYmxvY2sgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHJlc3VsdDsKQEAgLTM0Miw4ICszNTAsNiBA
QCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdElt
YWdlKCkKICAgICB9XTsKICAgICB3aGlsZSAoIWlzRG9uZSkKICAgICAgICAgW1tOU1J1bkxvb3Ag
Y3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTpb
TlNEYXRlIGRpc3RhbnRQYXN0XV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLQogI2Vsc2UKICAgICBD
R0Zsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMjsgLy8gRklYTUU6IGhhcmRjb2RlIDJ4IGZvciBu
b3cuIEluIGZ1dHVyZSB3ZSBjb3VsZCByZXNwZWN0IDF4IGFuZCAzeCBhcyB3ZSBkbyBvbiBNYWMu
CiAgICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGRl
dmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciwgMSk7CkBAIC0zNjAsMTMgKzM2Niwx
NSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hv
dEltYWdlKCkKICAgICBzaXplX3Qgcm93Qnl0ZXMgPSBDQVJlbmRlclNlcnZlckdldEJ1ZmZlclJv
d0J5dGVzKGJ1ZmZlcik7CiAKICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKLSAgICBSZXRh
aW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhEYXRhKGJ1ZmZlciwgZGF0YSwgQ0FSZW5kZXJTZXJ2ZXJHZXRCdWZmZXJEYXRh
U2l6ZShidWZmZXIpLCByZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSkpOworICAgIGF1dG8gcHJvdmlk
ZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoYnVmZmVyLCBkYXRhLCBD
QVJlbmRlclNlcnZlckdldEJ1ZmZlckRhdGFTaXplKGJ1ZmZlciksIHJlbGVhc2VEYXRhUHJvdmlk
ZXJEYXRhKSk7CiAgICAgCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VDcmVhdGUoYnVmZmVyV2lkdGgsIGJ1ZmZlckhlaWdodCwgOCwgMzIsIHJvd0J5
dGVzLCBzUkdCU3BhY2UsIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkhvc3QsIHByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5n
SW50ZW50RGVmYXVsdCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGNnSW1hZ2UpOwotCi0gICAgcmV0
dXJuIGNnSW1hZ2U7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoYnVm
ZmVyV2lkdGgsIGJ1ZmZlckhlaWdodCwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCU3BhY2UsIGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIHBy
b3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CiAjZW5kaWYKKyAgICBpZiAoc2hvdWxkVW5oaWRlU2Vs
ZWN0aW9uVmlldykKKyAgICAgICAgW3NlbGVjdGlvblZpZXcgc2V0SGlkZGVuOk5PXTsKKworICAg
IHJldHVybiByZXN1bHQ7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGEyZGMyMDc3NWQzN2EzMzdkZmQ5MzEwYjkzYjdhYjBhMWJlNmNiYjguLjdjMWY2MTQ2MDhh
MmEyNjllZDhhZmQ4OTEyNzM4NDQyYzQ5OTJjNDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
OS0xMC0yMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBbaU9TIDEzXSBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlvbi5z
dmcgaXMgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMzI0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTIxMjQyOTI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmYWlsaW5n
IHRlc3QgZXhwZWN0YXRpb24uIFNlZSBUb29scy9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxOS0x
MC0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICB3
cHQvY3NzL2Nzcy1pbWFnZXMvZ3JhZGllbnQvY29sb3Itc3RvcHMtcGFyc2luZy5odG1sIGZhaWxz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZDYxZjcwYTUxNDgwMTY5ODdjOWQ2NjVhOTA4NTE0MGZhZmIxN2Y0Yi4uM2FmOTE2YTE3MDA2Mjlj
ZjlmZDEyZmI5NjVlMDg5Yjc0OTI2MmRjNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTMzMiw5ICsxMzMyLDYgQEAgd2Via2l0Lm9yZy9i
LzE5OTA3MSBbIFJlbGVhc2UgXSBpbXBvcnRlZC9ibGluay9mYXN0L2Nzcy91c2VyLXNlbGVjdC1u
b25lLmh0bWwgWwogCiB3ZWJraXQub3JnL2IvMTkwODgyIFsgRGVidWcgXSBhbmltYXRpb25zL2No
YW5nZS1vbmUtYW5pbS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5OTE5
NiBbIFJlbGVhc2UgXSBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3RleHRwYXRoLXNlbGVjdGlv
bi5zdmcgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE5OTE5NiBbIFJl
bGVhc2UgXSBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3NlbGVjdFN1YlN0cmluZy0yLnN2ZyBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xOTkyMTMgWyBSZWxlYXNl
IF0gaW1wb3J0ZWQvYmxpbmsvZWRpdGluZy9zZWxlY3Rpb24vZGVsZXRlRnJvbURvY3VtZW50LWNy
YXNoLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTk5Mzcw
IFsgUmVsZWFzZSBdIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvc2VsZWN0U3ViU3RyaW5nLnN2
ZyBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>